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 1 1 14 0.000
modules gen 0 0 0 233 0.000
fib_recursive gen 5 6 6 1,085 0.005
loops gen 3 2 1 360 0.007
fib_iter gen 7 7 7 962 0.007
asdl_generated gen 9 5 8 510 0.018
scoped_resource gen 26 29 25 1,358 0.019
parse gen 24 25 24 952 0.025
containers gen 6 7 6 127 0.046
tuple_return_value gen 13 15 14 249 0.052
classes gen 2 1 3 33 0.053
files gen 6 5 6 100 0.058
length gen 36 34 37 237 0.153
cartesian gen 72 75 69 398 0.181
escape gen 95 99 96 435 0.219
cgi gen 260 236 258 735 0.353
varargs gen 14 14 21 27 0.513
control_flow gen 135 177 134 146 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.5 11.5 0.39
asdl_generated gen 3.3 3.4 3.4 7.7 0.42
gc_stack_roots gen 3.3 3.3 3.4 7.6 0.43
cgi gen 3.4 3.5 3.5 7.7 0.44
modules gen 3.5 3.7 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
parse gen 3.8 3.9 3.8 8.1 0.47
fib_iter gen 3.7 3.5 3.7 7.7 0.47
loops gen 3.7 3.8 3.7 7.7 0.47
files gen 3.8 3.8 3.7 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.7 28.5 48.2 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 0 0 5 0.000
loops gen 0 1 2 4 0.000
classes gen 1 2 0 9 0.097
fib_recursive gen 1 0 0 9 0.116
files gen 1 2 1 7 0.138
asdl_generated gen 1 5 2 7 0.142
cgi gen 1 3 1 7 0.143
length gen 2 3 2 10 0.202
modules gen 1 1 1 7 0.203
gc_stack_roots gen 1 0 1 6 0.229
control_flow gen 2 3 1 8 0.250
tuple_return_value gen 2 2 1 8 0.251
scoped_resource gen 3 3 5 12 0.255
escape gen 2 5 4 7 0.283
containers gen 8 7 8 23 0.336
parse gen 2 2 1 5 0.401
cartesian gen 3 5 6 6 0.499
varargs gen 25 24 17 29 0.854

raw benchmark files