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 1 1 232 0.000
fib_recursive gen 5 6 4 1,119 0.005
loops gen 3 3 2 363 0.007
fib_iter gen 7 7 7 962 0.007
asdl_generated gen 8 8 7 501 0.016
scoped_resource gen 25 28 30 1,371 0.019
parse gen 24 22 22 953 0.025
files gen 4 6 6 95 0.041
classes gen 1 1 1 31 0.043
tuple_return_value gen 11 15 13 247 0.046
containers gen 7 9 6 130 0.053
gc_stack_roots gen 1 1 0 11 0.063
length gen 36 33 31 246 0.148
cartesian gen 71 70 69 397 0.179
escape gen 92 104 94 430 0.214
cgi gen 256 247 258 740 0.346
varargs gen 13 14 17 29 0.445
control_flow gen 133 174 134 148 0.901

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.3 4.3 4.3 11.5 0.38
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
fib_recursive gen 3.4 3.5 3.5 7.7 0.44
cartesian gen 3.4 3.4 3.5 7.6 0.45
cgi gen 3.4 3.5 3.5 7.6 0.45
parse gen 3.7 3.7 3.9 8.1 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
gc_stack_roots gen 3.5 3.3 3.3 7.7 0.46
modules gen 3.5 3.4 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.7 3.5 3.5 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
loops gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.7 3.7 7.6 0.50
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.4 28.5 28.4 48.2 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
fib_iter gen 0 0 0 8 0.000
loops gen 0 0 1 4 0.000
gc_stack_roots gen 1 1 1 10 0.069
classes gen 1 2 2 13 0.102
fib_recursive gen 1 0 3 8 0.113
modules gen 1 0 1 8 0.177
length gen 2 4 7 9 0.218
files gen 3 1 1 11 0.267
parse gen 2 5 4 7 0.293
containers gen 7 6 8 23 0.302
asdl_generated gen 2 2 3 6 0.331
tuple_return_value gen 4 2 2 10 0.377
scoped_resource gen 4 5 1 9 0.452
cgi gen 4 7 3 7 0.571
control_flow gen 4 5 2 6 0.663
cartesian gen 4 9 10 6 0.668
escape gen 6 1 5 8 0.752
varargs gen 26 26 21 28 0.921

raw benchmark files