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
gc_stack_roots gen 0 0 0 10 0.000
loops gen 1 3 2 313 0.003
fib_recursive gen 5 4 5 1,008 0.005
modules gen 1 0 0 205 0.006
fib_iter gen 5 6 6 741 0.006
asdl_generated gen 9 9 9 510 0.017
scoped_resource gen 28 31 28 1,220 0.023
parse gen 23 25 21 895 0.026
containers gen 3 3 5 110 0.026
classes gen 2 1 2 34 0.045
tuple_return_value gen 14 14 12 215 0.067
files gen 6 5 5 89 0.068
length gen 31 29 31 229 0.136
cartesian gen 66 70 65 372 0.177
escape gen 81 96 84 382 0.211
cgi gen 183 177 184 655 0.279
varargs gen 16 20 14 22 0.733
control_flow gen 126 167 125 137 0.919

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.6 11.5 0.39
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
fib_iter gen 3.5 3.7 3.7 7.9 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
modules gen 3.5 3.7 3.8 7.7 0.46
asdl_generated gen 3.5 3.4 3.4 7.6 0.47
cartesian gen 3.5 3.5 3.4 7.6 0.47
loops gen 3.5 3.5 3.7 7.6 0.47
fib_recursive gen 3.7 3.7 3.7 7.9 0.47
control_flow gen 3.7 3.7 3.8 7.7 0.47
length gen 3.7 3.7 3.7 7.7 0.47
tuple_return_value gen 3.7 3.7 3.9 7.7 0.47
cgi gen 3.7 3.5 3.5 7.6 0.48
scoped_resource gen 3.7 3.5 3.5 7.6 0.48
files gen 3.8 3.8 3.7 7.9 0.48
parse gen 3.9 3.9 3.8 8.1 0.48
containers gen 28.6 28.4 28.7 48.2 0.59
varargs gen 5.6 5.5 5.5 7.7 0.73

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 1 1 4 0.000
files gen 0 1 1 6 0.000
modules gen 0 1 1 5 0.000
tuple_return_value gen 0 2 2 7 0.000
gc_stack_roots gen 1 1 1 8 0.138
parse gen 1 2 3 7 0.142
classes gen 1 1 1 4 0.189
length gen 1 3 1 4 0.253
asdl_generated gen 1 1 1 3 0.322
containers gen 10 9 7 23 0.416
cgi gen 3 1 2 7 0.429
fib_recursive gen 1 2 1 2 0.456
scoped_resource gen 2 1 2 4 0.492
varargs gen 8 4 10 15 0.538
cartesian gen 3 5 4 5 0.607
fib_iter gen 2 0 0 3 0.614
escape gen 5 3 2 5 1.006
loops gen 1 0 0 1 1.070

raw benchmark files