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 0 232 0.000
fib_recursive gen 4 5 6 1,120 0.004
loops gen 2 3 3 363 0.005
fib_iter gen 7 5 5 966 0.007
asdl_generated gen 4 8 9 498 0.008
scoped_resource gen 26 26 27 1,348 0.019
parse gen 24 28 22 946 0.025
classes gen 1 2 3 33 0.027
files gen 4 6 5 102 0.044
tuple_return_value gen 12 12 12 247 0.048
gc_stack_roots gen 1 1 1 14 0.049
containers gen 7 9 5 116 0.057
length gen 33 32 36 239 0.140
cartesian gen 67 74 72 393 0.171
escape gen 94 97 92 436 0.216
cgi gen 258 250 258 724 0.356
varargs gen 19 21 23 27 0.703
control_flow gen 134 177 137 147 0.908

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.3 4.5 4.5 11.6 0.37
escape gen 3.4 3.5 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.4 3.5 3.4 7.6 0.45
fib_recursive gen 3.5 3.5 3.4 7.7 0.46
length gen 3.5 3.7 3.5 7.7 0.46
modules gen 3.5 3.5 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
tuple_return_value gen 3.5 3.8 3.7 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.7 3.5 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
files gen 3.7 3.7 3.7 7.7 0.47
loops gen 3.7 3.5 3.7 7.6 0.48
control_flow gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.5 28.5 48.2 0.59
varargs gen 5.5 5.5 5.2 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 2 2 10 0.000
cgi gen 1 3 3 10 0.100
loops gen 1 0 0 8 0.106
gc_stack_roots gen 1 0 0 6 0.114
classes gen 2 1 0 10 0.173
containers gen 8 5 9 35 0.216
fib_recursive gen 2 1 0 8 0.224
modules gen 1 1 1 5 0.279
files gen 2 1 2 7 0.320
control_flow gen 2 1 2 6 0.334
tuple_return_value gen 3 5 3 8 0.369
scoped_resource gen 4 7 3 10 0.400
parse gen 2 1 3 5 0.409
length gen 4 5 1 9 0.450
escape gen 4 7 5 8 0.501
asdl_generated gen 6 2 1 10 0.599
varargs gen 20 17 16 30 0.666
cartesian gen 9 6 3 6 1.485

raw benchmark files