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 234 0.000
fib_recursive gen 6 4 6 1,121 0.005
loops gen 3 1 2 357 0.007
fib_iter gen 7 7 7 974 0.007
asdl_generated gen 8 7 7 511 0.015
scoped_resource gen 26 30 27 1,381 0.019
parse gen 23 26 24 971 0.023
containers gen 4 6 4 132 0.029
tuple_return_value gen 12 15 12 247 0.048
files gen 6 6 5 109 0.052
classes gen 3 2 1 34 0.078
gc_stack_roots gen 1 1 1 14 0.099
length gen 37 33 31 246 0.149
cartesian gen 69 74 70 405 0.170
escape gen 92 100 92 434 0.212
cgi gen 251 248 258 732 0.343
varargs gen 17 17 15 25 0.671
control_flow gen 136 183 136 147 0.921

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.3 3.4 3.4 7.7 0.42
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
fib_recursive gen 3.5 3.5 3.7 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.4 3.4 7.6 0.47
fib_iter gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
cgi gen 3.5 3.5 3.4 7.5 0.47
control_flow gen 3.7 3.7 3.8 7.7 0.47
files gen 3.7 3.8 3.7 7.7 0.47
length gen 3.7 3.5 3.5 7.7 0.47
loops gen 3.7 3.7 3.4 7.7 0.47
modules gen 3.7 3.5 3.5 7.7 0.47
tuple_return_value gen 3.8 3.5 3.8 7.6 0.50
containers gen 28.4 28.5 28.3 48.2 0.59
varargs gen 5.5 5.5 5.4 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 1 8 0.000
fib_iter gen 0 0 0 8 0.000
fib_recursive gen 0 2 0 6 0.000
gc_stack_roots gen 0 0 1 7 0.000
loops gen 0 2 0 10 0.000
control_flow gen 1 1 0 10 0.100
modules gen 1 1 0 9 0.158
files gen 1 1 2 5 0.190
length gen 2 3 8 7 0.291
asdl_generated gen 2 3 3 7 0.312
parse gen 3 1 1 9 0.330
tuple_return_value gen 3 1 3 8 0.375
scoped_resource gen 4 2 4 8 0.496
cgi gen 4 4 1 8 0.499
containers gen 10 8 10 19 0.510
varargs gen 22 21 23 31 0.701
escape gen 6 5 6 8 0.749
cartesian gen 6 4 5 5 1.198

raw benchmark files