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
fib_recursive gen 5 4 5 1,005 0.005
loops gen 1 3 2 312 0.005
modules gen 1 0 0 212 0.005
fib_iter gen 5 5 7 738 0.007
asdl_generated gen 9 9 9 508 0.019
scoped_resource gen 29 30 27 1,227 0.024
parse gen 23 24 23 908 0.025
classes gen 1 2 2 32 0.033
containers gen 5 3 6 122 0.041
files gen 5 5 4 96 0.053
tuple_return_value gen 13 14 13 217 0.061
gc_stack_roots gen 1 0 0 12 0.087
length gen 31 29 28 224 0.140
cartesian gen 69 70 67 357 0.192
escape gen 79 93 84 384 0.206
cgi gen 186 176 185 658 0.282
varargs gen 16 12 21 25 0.646
control_flow gen 125 167 127 137 0.913

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.6 0.39
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
loops gen 3.5 3.7 3.7 7.9 0.45
cartesian gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.8 3.8 3.8 8.3 0.46
escape gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
fib_recursive gen 3.7 3.7 3.5 7.7 0.47
modules gen 3.7 3.7 3.7 7.7 0.47
fib_iter gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.7 0.49
length gen 3.8 3.5 3.8 7.7 0.49
tuple_return_value gen 3.8 3.7 3.7 7.7 0.49
files gen 3.9 3.7 3.9 7.7 0.51
containers gen 28.6 28.5 28.7 48.4 0.59
varargs gen 5.8 5.8 5.6 7.7 0.75

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 1 0 4 0.000
cartesian gen 0 5 1 5 0.000
cgi gen 0 2 1 5 0.000
control_flow gen 0 1 0 2 0.000
gc_stack_roots gen 0 1 1 4 0.000
modules gen 0 1 1 4 0.000
scoped_resource gen 0 1 3 6 0.000
fib_recursive gen 1 1 0 6 0.152
parse gen 1 2 1 6 0.164
files gen 1 1 2 6 0.169
fib_iter gen 1 1 0 5 0.181
classes gen 1 0 0 6 0.183
tuple_return_value gen 1 2 1 5 0.205
length gen 1 3 4 4 0.252
loops gen 1 0 0 2 0.358
containers gen 7 10 7 17 0.410
varargs gen 8 12 3 11 0.734
escape gen 6 1 1 6 0.999

raw benchmark files