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 0 1 235 0.000
fib_recursive gen 5 4 5 1,125 0.004
loops gen 2 2 2 356 0.007
fib_iter gen 7 6 6 953 0.007
asdl_generated gen 8 7 10 514 0.015
scoped_resource gen 26 29 22 1,365 0.019
classes gen 1 1 2 35 0.025
parse gen 25 27 21 966 0.026
files gen 6 6 7 99 0.057
containers gen 7 7 4 125 0.060
tuple_return_value gen 15 13 13 246 0.061
gc_stack_roots gen 1 0 0 13 0.107
length gen 34 34 35 245 0.138
cartesian gen 69 70 69 393 0.176
escape gen 91 102 90 433 0.210
cgi gen 258 248 256 733 0.352
varargs gen 19 13 19 24 0.801
control_flow gen 135 178 134 141 0.957

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.5 4.3 11.5 0.38
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
length gen 3.5 3.7 3.7 7.7 0.46
asdl_generated gen 3.5 3.3 3.4 7.6 0.47
cartesian gen 3.5 3.5 3.5 7.6 0.47
cgi gen 3.5 3.4 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.7 3.7 7.6 0.47
parse gen 3.8 3.9 3.8 8.1 0.47
fib_iter gen 3.7 3.4 3.4 7.6 0.48
fib_recursive gen 3.7 3.7 3.5 7.6 0.48
files gen 3.7 3.7 3.8 7.6 0.48
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.7 0.49
containers gen 28.5 28.5 28.3 48.3 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 1 1 9 0.000
gc_stack_roots gen 0 1 1 7 0.000
loops gen 0 1 1 8 0.000
parse gen 0 0 4 9 0.000
tuple_return_value gen 0 3 2 8 0.000
control_flow gen 1 1 2 9 0.111
files gen 1 1 0 8 0.140
modules gen 1 1 0 8 0.177
classes gen 2 2 1 8 0.222
fib_recursive gen 2 2 1 8 0.226
containers gen 6 8 10 27 0.236
scoped_resource gen 4 4 9 11 0.361
cartesian gen 4 10 9 10 0.401
cgi gen 3 4 4 6 0.502
varargs gen 19 26 19 33 0.583
asdl_generated gen 2 3 0 3 0.658
escape gen 7 3 7 9 0.781
length gen 5 3 4 6 0.829

raw benchmark files