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 12 0.000
modules gen 0 0 1 239 0.000
fib_recursive gen 4 6 6 1,106 0.004
fib_iter gen 7 7 5 1,059 0.007
loops gen 3 2 2 357 0.007
asdl_generated gen 9 9 7 510 0.017
scoped_resource gen 28 23 26 1,359 0.020
parse gen 25 27 26 952 0.026
classes gen 1 3 2 33 0.027
containers gen 4 7 6 131 0.030
tuple_return_value gen 13 21 15 253 0.050
files gen 7 5 7 98 0.069
length gen 38 34 34 236 0.160
cartesian gen 69 74 69 416 0.166
escape gen 96 96 95 430 0.223
cgi gen 255 252 254 737 0.345
varargs gen 15 17 13 28 0.540
control_flow gen 133 179 137 143 0.928

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.2 4.5 4.5 11.6 0.36
gc_stack_roots gen 3.4 3.4 3.3 7.7 0.44
asdl_generated gen 3.4 3.3 3.3 7.6 0.45
cgi gen 3.5 3.7 3.5 7.7 0.46
escape gen 3.5 3.4 3.4 7.7 0.46
fib_recursive gen 3.5 3.5 3.7 7.7 0.46
loops gen 3.5 3.4 3.7 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
fib_iter gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
tuple_return_value gen 3.7 3.7 3.8 7.9 0.47
files gen 3.7 3.7 3.7 7.7 0.47
length gen 3.7 3.7 3.5 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.48
modules gen 3.7 3.4 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.5 28.4 48.2 0.59
varargs gen 5.6 5.5 5.5 7.7 0.73

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 0 2 7 0.000
files gen 0 2 0 10 0.000
loops gen 0 1 1 10 0.000
length gen 1 3 5 12 0.083
parse gen 1 0 0 11 0.093
gc_stack_roots gen 1 0 1 9 0.158
asdl_generated gen 1 1 3 7 0.158
classes gen 2 0 1 10 0.177
scoped_resource gen 2 8 4 11 0.186
modules gen 2 1 0 7 0.217
fib_recursive gen 2 0 0 8 0.225
tuple_return_value gen 2 0 0 7 0.301
control_flow gen 3 2 1 10 0.301
escape gen 2 8 3 5 0.399
containers gen 10 8 8 22 0.450
varargs gen 23 22 25 29 0.800
cartesian gen 6 6 7 7 0.857
cgi gen 6 1 6 6 0.998

raw benchmark files