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
classes gen 0 2 0 33 0.000
loops gen 1 1 2 355 0.004
fib_recursive gen 4 5 4 1,102 0.004
modules gen 1 1 0 237 0.006
fib_iter gen 7 6 6 970 0.007
asdl_generated gen 7 8 9 527 0.013
scoped_resource gen 26 28 28 1,367 0.019
parse gen 24 26 22 961 0.025
containers gen 7 4 5 130 0.055
files gen 6 5 6 100 0.057
tuple_return_value gen 15 14 12 247 0.060
gc_stack_roots gen 1 0 1 15 0.086
length gen 36 34 36 247 0.144
cartesian gen 68 74 69 388 0.175
escape gen 94 102 94 433 0.216
cgi gen 256 245 261 739 0.347
varargs gen 13 19 20 29 0.449
control_flow gen 132 174 135 147 0.898

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.3 3.3 3.4 7.6 0.43
escape gen 3.4 3.5 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
length gen 3.4 3.7 3.5 7.6 0.45
modules gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.7 3.8 3.7 8.0 0.46
cartesian gen 3.5 3.4 3.4 7.6 0.47
cgi gen 3.5 3.4 3.4 7.6 0.47
fib_iter gen 3.5 3.5 3.7 7.6 0.47
fib_recursive 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.5 7.7 0.47
files gen 3.7 3.8 3.8 7.6 0.48
tuple_return_value gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.6 28.5 28.4 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 1 1 6 0.000
gc_stack_roots gen 0 1 1 5 0.000
modules gen 0 0 1 9 0.000
tuple_return_value gen 0 2 3 9 0.000
parse gen 1 1 3 10 0.101
loops gen 1 2 1 9 0.140
files gen 1 2 1 5 0.191
containers gen 6 10 9 22 0.281
length gen 3 3 3 10 0.305
classes gen 3 1 3 9 0.305
fib_recursive gen 2 1 2 5 0.355
control_flow gen 3 5 0 7 0.425
scoped_resource gen 4 4 2 7 0.575
asdl_generated gen 3 2 1 5 0.606
cgi gen 5 5 0 8 0.623
cartesian gen 7 6 6 10 0.703
escape gen 5 7 3 7 0.713
varargs gen 25 19 18 26 0.964

raw benchmark files