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 213 0.000
loops gen 1 2 2 311 0.004
fib_recursive gen 5 4 4 1,021 0.005
fib_iter gen 6 5 5 746 0.008
asdl_generated gen 8 7 9 512 0.015
parse gen 22 24 22 913 0.024
scoped_resource gen 30 28 28 1,241 0.024
containers gen 5 4 4 107 0.048
files gen 5 4 4 88 0.057
tuple_return_value gen 13 14 12 214 0.063
classes gen 2 2 1 33 0.067
gc_stack_roots gen 1 0 0 13 0.085
length gen 29 30 28 222 0.131
cartesian gen 69 72 70 356 0.193
escape gen 84 90 85 379 0.221
cgi gen 184 177 185 664 0.277
varargs gen 18 13 13 27 0.692
control_flow gen 123 167 123 138 0.897

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.6 0.37
asdl_generated gen 3.4 3.4 3.4 7.9 0.43
gc_stack_roots gen 3.4 3.5 3.4 7.7 0.44
parse gen 3.7 3.8 3.8 8.3 0.44
cartesian gen 3.5 3.5 3.4 7.7 0.46
cgi gen 3.5 3.5 3.7 7.7 0.46
escape gen 3.5 3.7 3.4 7.6 0.47
scoped_resource gen 3.5 3.5 3.4 7.6 0.47
fib_recursive gen 3.7 3.7 3.8 7.7 0.47
loops gen 3.7 3.7 3.8 7.7 0.47
fib_iter gen 3.7 3.7 3.7 7.6 0.48
modules gen 3.8 3.7 3.7 7.7 0.49
files gen 3.8 3.7 3.8 7.6 0.50
length gen 3.8 3.7 3.7 7.6 0.50
control_flow gen 3.9 3.7 3.8 7.7 0.51
tuple_return_value gen 3.9 3.8 3.8 7.7 0.51
containers gen 28.6 28.8 28.4 48.3 0.59
varargs gen 5.5 5.8 5.6 7.9 0.70

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
cartesian gen 0 3 0 6 0.000
classes gen 0 0 1 5 0.000
fib_iter gen 0 1 1 5 0.000
fib_recursive gen 0 1 1 3 0.000
gc_stack_roots gen 0 1 1 4 0.000
loops gen 1 1 0 7 0.156
files gen 1 2 2 6 0.167
modules gen 1 1 1 6 0.188
scoped_resource gen 1 3 3 5 0.198
tuple_return_value gen 1 2 2 5 0.207
containers gen 7 8 8 22 0.328
asdl_generated gen 2 3 0 4 0.475
control_flow gen 2 1 2 4 0.495
parse gen 2 2 2 4 0.496
varargs gen 5 11 11 10 0.519
length gen 3 2 4 5 0.603
escape gen 3 4 0 4 0.747
cgi gen 2 1 0 1 1.999

raw benchmark files