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
loops gen 2 3 2 363 0.005
fib_recursive gen 5 5 6 1,091 0.005
modules gen 1 0 1 234 0.006
fib_iter gen 8 7 6 1,033 0.008
asdl_generated gen 9 8 9 503 0.018
scoped_resource gen 26 28 29 1,354 0.019
parse gen 21 26 21 951 0.022
classes gen 1 2 3 36 0.025
tuple_return_value gen 14 16 12 248 0.055
files gen 6 6 5 99 0.058
containers gen 7 8 8 119 0.061
gc_stack_roots gen 1 0 1 11 0.063
length gen 37 32 35 246 0.150
cartesian gen 69 74 66 406 0.170
escape gen 95 99 89 428 0.221
cgi gen 259 250 258 721 0.359
varargs gen 20 18 15 28 0.705
control_flow gen 134 179 135 146 0.917

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.5 3.5 7.7 0.44
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
cartesian gen 3.4 3.5 3.5 7.6 0.45
length gen 3.5 3.7 3.7 7.7 0.46
modules gen 3.5 3.5 3.7 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
files gen 3.5 3.8 3.8 7.6 0.47
gc_stack_roots gen 3.5 3.4 3.3 7.6 0.47
fib_iter gen 3.7 3.5 3.5 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.47
control_flow gen 3.7 3.8 3.8 7.6 0.48
loops gen 3.7 3.5 3.5 7.6 0.48
scoped_resource gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.4 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
modules gen 0 1 0 5 0.000
gc_stack_roots gen 1 1 0 9 0.077
loops gen 1 0 0 7 0.119
asdl_generated gen 1 2 1 8 0.125
cgi gen 1 3 3 7 0.143
fib_iter gen 1 0 1 7 0.147
files gen 1 1 2 7 0.164
tuple_return_value gen 1 1 3 6 0.175
containers gen 6 6 6 29 0.214
fib_recursive gen 1 1 0 4 0.258
control_flow gen 2 1 1 7 0.283
classes gen 2 1 0 6 0.295
length gen 2 4 3 6 0.331
scoped_resource gen 4 4 1 10 0.405
escape gen 4 7 8 9 0.447
parse gen 4 3 4 9 0.451
varargs gen 19 20 23 27 0.694
cartesian gen 6 6 10 6 1.000

raw benchmark files