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 209 0.000
fib_recursive gen 5 5 4 991 0.006
loops gen 2 2 2 309 0.007
fib_iter gen 5 6 6 739 0.007
asdl_generated gen 10 8 8 511 0.019
parse gen 21 26 22 896 0.023
scoped_resource gen 29 30 27 1,221 0.024
containers gen 5 3 1 110 0.046
tuple_return_value gen 13 15 14 218 0.061
files gen 6 6 5 92 0.066
classes gen 2 2 2 29 0.074
gc_stack_roots gen 1 0 1 10 0.111
length gen 29 33 29 230 0.127
cartesian gen 67 72 65 360 0.186
escape gen 84 92 83 380 0.221
cgi gen 184 176 185 659 0.280
varargs gen 13 13 12 19 0.667
control_flow gen 125 166 124 136 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.3 11.6 0.38
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.5 3.4 7.7 0.44
cgi gen 3.5 3.5 3.5 7.9 0.45
fib_recursive gen 3.5 3.5 3.7 7.9 0.45
scoped_resource gen 3.5 3.7 3.5 7.9 0.45
cartesian gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.7 3.5 3.7 7.9 0.47
fib_iter gen 3.7 3.8 3.7 7.9 0.47
parse gen 3.8 3.9 3.8 8.0 0.47
control_flow gen 3.7 3.9 3.8 7.6 0.48
files gen 3.7 3.8 3.9 7.6 0.48
loops gen 3.7 3.7 3.7 7.6 0.48
modules gen 3.7 3.7 3.7 7.6 0.48
length gen 3.8 3.7 3.5 7.7 0.49
tuple_return_value gen 3.8 3.9 3.9 7.6 0.50
containers gen 28.3 28.6 28.4 48.4 0.59
varargs gen 5.5 5.4 5.6 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 2 1 5 0.000
classes gen 0 0 0 8 0.000
fib_recursive gen 0 0 1 5 0.000
files gen 0 0 1 2 0.000
gc_stack_roots gen 0 1 0 7 0.000
loops gen 0 1 0 5 0.000
scoped_resource gen 0 1 3 6 0.000
fib_iter gen 1 1 0 5 0.181
modules gen 1 0 0 5 0.229
control_flow gen 1 2 1 4 0.250
escape gen 1 2 2 4 0.250
tuple_return_value gen 1 2 0 4 0.254
containers gen 7 9 11 19 0.371
cartesian gen 2 3 3 3 0.668
varargs gen 11 11 12 16 0.670
parse gen 3 0 2 4 0.745
cgi gen 1 2 1 1 1.002
length gen 3 0 3 2 1.511

raw benchmark files