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
loops gen 1 2 2 358 0.004
fib_recursive gen 4 6 5 1,110 0.004
modules gen 1 1 1 240 0.006
fib_iter gen 6 7 7 969 0.006
asdl_generated gen 9 7 8 513 0.017
scoped_resource gen 26 29 27 1,351 0.020
parse gen 21 26 23 953 0.022
tuple_return_value gen 11 16 12 245 0.045
containers gen 6 6 4 132 0.046
files gen 6 6 7 105 0.055
classes gen 2 1 1 32 0.057
gc_stack_roots gen 1 0 0 15 0.089
length gen 34 31 33 239 0.140
cartesian gen 67 69 68 395 0.169
escape gen 92 100 91 433 0.212
cgi gen 258 252 256 747 0.346
varargs gen 20 19 19 30 0.658
control_flow gen 135 177 134 148 0.913

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.5 0.38
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
escape gen 3.4 3.4 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
length gen 3.4 3.7 3.7 7.6 0.45
parse gen 3.7 3.8 3.7 8.1 0.45
cartesian gen 3.5 3.5 3.5 7.7 0.46
modules gen 3.5 3.7 3.5 7.7 0.46
cgi gen 3.5 3.4 3.7 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.7 3.5 3.5 7.7 0.47
loops gen 3.7 3.5 3.7 7.7 0.47
control_flow gen 3.7 3.8 3.8 7.6 0.48
files gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.8 3.7 3.8 7.7 0.49
containers gen 28.5 28.5 28.5 48.3 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 1 1 5 0.000
modules gen 0 0 0 8 0.000
classes gen 1 2 2 11 0.083
asdl_generated gen 1 3 2 10 0.098
loops gen 1 1 1 9 0.141
files gen 1 1 0 6 0.161
cgi gen 1 1 4 6 0.167
fib_iter gen 1 0 0 5 0.206
scoped_resource gen 4 3 3 12 0.326
control_flow gen 2 2 2 6 0.331
fib_recursive gen 2 0 1 5 0.357
containers gen 8 9 10 20 0.407
tuple_return_value gen 4 1 3 8 0.500
length gen 5 5 6 10 0.508
parse gen 4 1 2 7 0.578
varargs gen 19 19 20 27 0.694
escape gen 6 4 7 7 0.863
cartesian gen 8 11 7 6 1.326

raw benchmark files