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 0 1 12 0.000
loops gen 1 2 2 361 0.002
modules gen 1 1 0 236 0.003
fib_recursive gen 5 4 4 1,101 0.005
fib_iter gen 7 7 4 968 0.007
asdl_generated gen 8 8 8 542 0.015
parse gen 19 26 25 964 0.020
scoped_resource gen 28 29 27 1,369 0.020
classes gen 1 2 1 34 0.026
containers gen 4 9 6 118 0.033
tuple_return_value gen 11 16 12 252 0.043
files gen 7 5 5 97 0.069
length gen 37 32 35 244 0.151
cartesian gen 70 72 70 395 0.177
escape gen 91 103 97 435 0.210
cgi gen 250 249 255 750 0.333
varargs gen 10 20 18 24 0.411
control_flow gen 134 177 133 142 0.945

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.3 4.5 11.5 0.38
gc_stack_roots gen 3.4 3.5 3.3 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
length gen 3.4 3.5 3.5 7.6 0.45
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
cgi gen 3.5 3.4 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
fib_iter gen 3.7 3.5 3.5 7.7 0.47
files gen 3.7 3.5 3.8 7.7 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.48
control_flow gen 3.7 3.8 3.7 7.6 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
modules gen 3.7 3.4 3.7 7.6 0.48
containers gen 28.5 28.5 28.5 48.4 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
fib_iter gen 0 0 3 7 0.000
files gen 0 2 2 9 0.000
modules gen 1 0 1 7 0.103
fib_recursive gen 1 2 2 10 0.104
control_flow gen 1 2 3 9 0.111
cgi gen 1 3 5 7 0.143
gc_stack_roots gen 1 1 1 8 0.173
classes gen 2 1 2 9 0.200
scoped_resource gen 2 2 3 9 0.221
asdl_generated gen 2 2 2 8 0.247
length gen 2 5 3 8 0.256
containers gen 10 5 8 30 0.321
tuple_return_value gen 4 1 3 8 0.497
loops gen 2 1 0 3 0.557
cartesian gen 5 8 4 8 0.623
varargs gen 29 18 21 33 0.867
escape gen 7 2 2 5 1.389
parse gen 6 1 1 4 1.522

raw benchmark files