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 2 0 12 0.000
fib_recursive gen 5 6 6 1,202 0.004
modules gen 1 0 1 235 0.006
fib_iter gen 6 6 7 974 0.006
loops gen 3 3 1 360 0.007
containers gen 2 7 7 135 0.015
asdl_generated gen 8 9 8 522 0.016
scoped_resource gen 26 29 25 1,354 0.019
parse gen 23 24 23 947 0.025
files gen 3 5 7 98 0.029
classes gen 2 2 3 34 0.055
tuple_return_value gen 14 14 14 246 0.057
length gen 35 31 35 248 0.140
cartesian gen 72 72 72 394 0.183
escape gen 94 97 94 432 0.217
cgi gen 251 252 254 732 0.343
varargs gen 20 18 12 25 0.815
control_flow gen 134 180 136 146 0.914

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.5 11.5 0.39
gc_stack_roots gen 3.3 3.4 3.3 7.7 0.42
cgi gen 3.3 3.7 3.4 7.6 0.43
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.4 3.5 3.4 7.6 0.45
fib_recursive gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.5 7.6 0.47
loops gen 3.5 3.7 3.5 7.6 0.47
modules gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.7 8.1 0.47
fib_iter gen 3.7 3.7 3.7 7.7 0.47
length gen 3.7 3.5 3.7 7.7 0.47
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.8 3.7 7.6 0.50
tuple_return_value gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.5 28.5 48.3 0.59
varargs gen 5.4 5.5 5.4 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
cgi gen 0 0 6 7 0.000
loops gen 0 0 2 6 0.000
modules gen 0 1 0 9 0.000
classes gen 1 1 0 10 0.093
fib_recursive gen 1 0 0 11 0.095
tuple_return_value gen 1 3 1 7 0.143
fib_iter gen 1 1 0 6 0.168
gc_stack_roots gen 1 0 1 8 0.179
control_flow gen 2 0 1 7 0.285
asdl_generated gen 2 1 2 6 0.339
files gen 4 2 0 9 0.417
parse gen 3 3 3 6 0.507
length gen 4 5 4 7 0.566
varargs gen 18 21 27 32 0.573
scoped_resource gen 5 3 5 8 0.617
containers gen 12 7 7 17 0.717
cartesian gen 5 6 3 6 0.835
escape gen 5 7 5 4 1.241

raw benchmark files