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 238 0.000
fib_recursive gen 5 6 6 1,087 0.005
loops gen 2 2 3 355 0.005
fib_iter gen 7 6 8 959 0.008
asdl_generated gen 7 9 9 525 0.014
scoped_resource gen 26 21 26 1,354 0.019
parse gen 26 23 23 950 0.027
containers gen 6 7 8 131 0.044
files gen 5 6 6 99 0.050
classes gen 2 3 1 35 0.053
tuple_return_value gen 14 16 11 256 0.054
gc_stack_roots gen 2 1 1 13 0.115
length gen 36 30 36 238 0.151
cartesian gen 65 75 66 393 0.166
escape gen 92 101 96 426 0.215
cgi gen 259 250 257 743 0.348
varargs gen 16 20 20 32 0.487
control_flow gen 134 179 134 143 0.938

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
escape gen 3.4 3.7 3.7 7.7 0.44
scoped_resource gen 3.4 3.5 3.5 7.7 0.44
asdl_generated gen 3.4 3.3 3.4 7.6 0.45
gc_stack_roots gen 3.5 3.5 3.4 7.7 0.46
loops gen 3.5 3.7 3.7 7.7 0.46
cartesian gen 3.5 3.4 3.5 7.6 0.47
cgi gen 3.5 3.7 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.7 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
fib_recursive gen 3.7 3.5 3.7 7.7 0.47
tuple_return_value gen 3.7 3.8 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.7 0.49
parse gen 3.9 3.7 3.9 8.0 0.49
files gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.5 28.4 48.2 0.59
varargs gen 5.4 5.5 5.5 7.6 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 0 6 0.000
gc_stack_roots gen 0 0 0 8 0.000
parse gen 0 4 3 14 0.000
classes gen 1 0 2 12 0.077
cgi gen 1 2 3 10 0.100
loops gen 1 2 0 8 0.108
tuple_return_value gen 1 1 4 7 0.140
fib_recursive gen 1 0 0 6 0.176
files gen 2 1 1 11 0.181
control_flow gen 2 1 2 10 0.200
modules gen 2 2 1 7 0.217
length gen 3 7 3 11 0.271
asdl_generated gen 3 1 1 10 0.304
containers gen 9 9 7 28 0.308
scoped_resource gen 4 10 4 7 0.569
cartesian gen 9 5 9 12 0.751
escape gen 8 4 2 10 0.800
varargs gen 23 19 18 27 0.829

raw benchmark files