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 1 1 235 0.000
loops gen 1 3 1 362 0.002
fib_recursive gen 6 5 6 1,100 0.006
fib_iter gen 7 6 6 961 0.007
asdl_generated gen 8 10 8 522 0.016
scoped_resource gen 26 30 28 1,366 0.019
parse gen 25 26 25 989 0.025
tuple_return_value gen 11 15 14 245 0.045
files gen 5 6 6 102 0.047
classes gen 2 3 1 34 0.057
gc_stack_roots gen 1 1 1 12 0.062
containers gen 8 7 6 123 0.064
length gen 35 34 34 245 0.143
cartesian gen 71 76 68 397 0.179
escape gen 93 100 94 441 0.212
cgi gen 260 250 258 748 0.347
varargs gen 19 17 18 29 0.651
control_flow gen 135 179 135 149 0.904

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.5 4.5 4.5 11.5 0.39
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
cartesian gen 3.4 3.4 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
fib_recursive gen 3.5 3.7 3.5 7.9 0.45
tuple_return_value gen 3.5 3.8 3.7 7.9 0.45
parse gen 3.7 3.8 3.9 8.1 0.45
escape gen 3.5 3.5 3.7 7.7 0.46
fib_iter gen 3.5 3.7 3.7 7.7 0.46
length gen 3.5 3.5 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
cgi gen 3.7 3.5 3.5 7.7 0.47
loops gen 3.7 3.7 3.5 7.7 0.47
modules gen 3.7 3.5 3.5 7.7 0.47
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.4 28.4 28.5 48.2 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 7 0.000
fib_recursive gen 0 1 0 12 0.000
gc_stack_roots gen 1 1 0 9 0.083
classes gen 1 0 2 11 0.089
control_flow gen 1 1 0 9 0.111
containers gen 6 8 8 34 0.174
parse gen 1 1 1 5 0.204
asdl_generated gen 2 0 2 10 0.205
modules gen 1 0 0 7 0.207
loops gen 2 0 1 6 0.284
length gen 3 3 5 10 0.301
files gen 2 1 1 6 0.325
cgi gen 2 3 3 6 0.334
tuple_return_value gen 4 2 1 10 0.402
scoped_resource gen 4 3 2 9 0.442
varargs gen 20 23 21 30 0.663
cartesian gen 5 4 6 7 0.714
escape gen 7 4 5 9 0.780

raw benchmark files