mycpp Code Generation

Measure the speedup from mycpp, and the resource usage.

Source code: oil/mycpp/examples

User Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
classes gen 0 4 27 0.000
loops gen 0 3 295 0.000
modules gen 0 0 197 0.000
fib_iter gen 4 4 898 0.004
fib_recursive gen 7 7 881 0.009
asdl_generated gen 6 11 372 0.016
parse gen 25 19 781 0.032
scoped_resource gen 41 46 1,046 0.039
files gen 4 4 68 0.057
tuple_return_value gen 16 15 189 0.087
containers gen 12 4 122 0.100
length gen 38 37 209 0.181
cartesian gen 84 71 322 0.262
escape gen 103 93 355 0.291
varargs gen 8 8 23 0.335
gc_stack_roots gen 2 2 4 0.445
cgi gen 266 264 503 0.528
control_flow gen 204 160 111 1.847

Max Resident Set Size (MB)

Lower ratios are better. We use MB (powers of 10), not MiB (powers of 2).

example name gen C++ C++-Souffle Python C++ : Python
classes gen 4.5 4.5 10.7 0.41
asdl_generated gen 3.5 3.7 7.1 0.50
parse gen 3.8 3.7 7.6 0.50
gc_stack_roots gen 3.5 3.7 6.9 0.51
escape gen 3.7 3.5 7.1 0.52
loops gen 3.7 3.8 7.1 0.52
scoped_resource gen 3.7 3.8 7.1 0.52
tuple_return_value gen 3.7 3.7 7.1 0.52
control_flow gen 3.7 3.7 6.9 0.53
fib_iter gen 3.7 3.7 6.9 0.53
cartesian gen 3.8 3.7 6.9 0.55
cgi gen 3.8 3.7 6.9 0.55
fib_recursive gen 3.8 3.7 6.9 0.55
files gen 3.8 3.7 6.9 0.55
length gen 3.8 3.8 6.9 0.55
modules gen 3.8 3.8 6.9 0.55
containers gen 28.4 28.6 47.6 0.60
varargs gen 5.4 5.5 6.9 0.77

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
gc_stack_roots gen 0 0 8 0.000
modules gen 2 2 12 0.158
containers gen 4 11 16 0.258
fib_iter gen 4 4 8 0.477
files gen 4 4 8 0.487
cgi gen 4 4 8 0.496
parse gen 4 8 8 0.520
classes gen 3 0 5 0.740
fib_recursive gen 4 4 4 0.936
loops gen 4 0 4 0.940
control_flow gen 4 0 4 0.978
escape gen 4 12 4 0.998
cartesian gen 8 16 8 1.009
scoped_resource gen 8 0 8 1.015
tuple_return_value gen 4 4 4 1.023
varargs gen 59 58 51 1.161
asdl_generated gen 6 0 4 1.488
length gen 8 8 4 1.877

raw benchmark files