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
modules gen 0 2 1 237 0.000
fib_recursive gen 6 6 5 1,120 0.006
fib_iter gen 7 7 7 976 0.007
loops gen 3 2 3 359 0.007
asdl_generated gen 7 9 7 510 0.015
scoped_resource gen 26 28 30 1,388 0.019
parse gen 25 25 24 951 0.026
tuple_return_value gen 9 15 14 250 0.036
classes gen 2 2 2 35 0.054
containers gen 7 6 5 127 0.055
files gen 7 6 6 100 0.070
gc_stack_roots gen 1 0 0 12 0.116
length gen 36 32 32 241 0.149
cartesian gen 69 74 72 390 0.177
escape gen 91 101 95 444 0.205
cgi gen 264 246 243 736 0.359
varargs gen 21 20 24 24 0.891
control_flow gen 136 180 134 151 0.898

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.5 4.5 4.3 11.6 0.38
asdl_generated gen 3.3 3.4 3.4 7.7 0.42
gc_stack_roots gen 3.3 3.4 3.3 7.6 0.43
cartesian gen 3.4 3.4 3.5 7.7 0.44
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.5 3.3 7.6 0.47
escape gen 3.5 3.3 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.7 3.7 7.6 0.47
parse gen 3.8 3.8 3.7 8.1 0.47
files gen 3.7 3.7 3.8 7.7 0.47
length gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.7 28.5 28.4 48.2 0.59
varargs gen 5.5 5.4 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 0 2 4 0.000
fib_iter gen 0 0 0 7 0.000
fib_recursive gen 0 0 1 8 0.000
files gen 0 1 1 7 0.000
gc_stack_roots gen 0 1 1 9 0.000
loops gen 0 2 0 7 0.000
classes gen 1 1 1 10 0.094
parse gen 1 2 2 10 0.098
modules gen 1 0 0 7 0.211
containers gen 7 8 9 26 0.270
length gen 3 5 7 11 0.272
cgi gen 2 6 5 6 0.333
asdl_generated gen 3 1 3 8 0.349
scoped_resource gen 4 3 2 9 0.458
varargs gen 18 19 15 34 0.539
cartesian gen 6 6 3 8 0.751
tuple_return_value gen 6 2 2 7 0.867
escape gen 7 7 5 7 0.999

raw benchmark files