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 0 12 0.000
modules gen 0 1 1 234 0.000
fib_recursive gen 5 6 6 1,110 0.005
fib_iter gen 6 6 6 963 0.006
loops gen 3 3 3 364 0.007
asdl_generated gen 9 8 8 509 0.018
scoped_resource gen 26 27 30 1,364 0.019
parse gen 23 23 23 946 0.024
containers gen 4 5 5 125 0.034
tuple_return_value gen 14 16 14 247 0.057
files gen 6 6 5 101 0.058
classes gen 3 1 2 34 0.080
length gen 35 32 35 243 0.144
cartesian gen 65 75 71 395 0.165
escape gen 93 101 92 432 0.215
cgi gen 255 249 258 734 0.348
varargs gen 16 16 17 29 0.556
control_flow gen 134 177 134 150 0.895

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.3 4.3 11.5 0.39
gc_stack_roots gen 3.3 3.4 3.3 7.6 0.43
escape gen 3.4 3.4 3.4 7.7 0.44
asdl_generated gen 3.5 3.4 3.4 7.9 0.45
parse gen 3.7 3.8 3.8 8.1 0.45
cgi gen 3.4 3.4 3.4 7.5 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.7 3.7 3.7 7.7 0.47
fib_iter gen 3.7 3.5 3.5 7.6 0.48
fib_recursive gen 3.7 3.4 3.4 7.6 0.48
modules gen 3.7 3.7 3.5 7.6 0.48
files gen 3.8 3.7 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.7 7.6 0.50
containers gen 28.5 28.5 28.4 48.2 0.59
varargs gen 5.5 5.5 5.4 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 2 1 10 0.000
loops gen 0 0 0 9 0.000
tuple_return_value gen 1 1 1 8 0.126
fib_iter gen 1 1 1 8 0.127
control_flow gen 1 2 2 7 0.143
fib_recursive gen 1 0 0 7 0.147
files gen 1 1 2 6 0.163
modules gen 1 1 0 9 0.164
asdl_generated gen 1 2 2 6 0.166
gc_stack_roots gen 1 0 1 8 0.169
containers gen 10 9 9 28 0.340
parse gen 3 4 3 8 0.368
length gen 4 4 3 8 0.498
scoped_resource gen 5 4 0 7 0.704
escape gen 6 4 6 8 0.748
cgi gen 6 3 2 8 0.751
varargs gen 22 23 21 29 0.764
cartesian gen 10 5 4 8 1.252

raw benchmark files