mycpp Code Generation

Measure the speedup from mycpp, and the resource usage.

Source code: oils/mycpp/examples

User Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
loops gen 1 3 2 314 0.002
fib_recursive gen 4 5 5 997 0.004
modules gen 1 1 1 207 0.006
fib_iter gen 5 5 6 741 0.007
asdl_generated gen 9 7 9 514 0.017
scoped_resource gen 27 29 29 1,227 0.022
classes gen 1 1 2 36 0.022
containers gen 3 5 6 113 0.026
parse gen 24 25 23 893 0.027
files gen 5 7 4 90 0.058
tuple_return_value gen 13 16 13 217 0.062
gc_stack_roots gen 1 1 0 15 0.075
length gen 31 32 30 230 0.137
cartesian gen 69 71 66 361 0.191
escape gen 83 93 85 408 0.203
cgi gen 186 175 186 657 0.283
varargs gen 17 17 16 24 0.706
control_flow gen 125 175 126 134 0.933

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++-NoSouffle C++-Souffle Python C++ : Python
classes gen 4.6 4.5 4.5 11.5 0.40
cartesian gen 3.4 3.4 3.4 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.5 3.7 3.7 7.9 0.45
gc_stack_roots gen 3.5 3.4 3.3 7.9 0.45
loops gen 3.5 3.7 3.7 7.7 0.46
fib_iter gen 3.5 3.7 3.5 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.7 3.5 3.5 7.7 0.47
parse gen 3.8 3.8 3.7 8.0 0.48
escape gen 3.7 3.5 3.5 7.6 0.48
modules gen 3.8 3.5 3.7 7.9 0.48
tuple_return_value gen 3.8 3.8 3.8 7.9 0.48
fib_recursive gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.9 3.9 3.9 7.7 0.51
files gen 3.9 3.8 3.9 7.6 0.52
containers gen 28.6 28.7 28.6 48.4 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
cartesian gen 0 3 3 3 0.000
cgi gen 0 3 1 5 0.000
gc_stack_roots gen 0 0 1 2 0.000
modules gen 0 0 0 4 0.000
parse gen 0 1 1 8 0.000
asdl_generated gen 1 3 1 8 0.121
control_flow gen 1 1 0 7 0.143
tuple_return_value gen 1 0 1 6 0.160
files gen 1 0 2 5 0.208
fib_recursive gen 1 1 0 5 0.220
fib_iter gen 1 2 1 4 0.229
containers gen 10 9 8 20 0.499
classes gen 2 2 0 3 0.525
varargs gen 7 8 8 12 0.581
escape gen 3 2 1 4 0.748
scoped_resource gen 3 2 1 4 0.768
length gen 1 1 2 1 1.009
loops gen 1 0 0 1 1.492

raw benchmark files