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 0 231 0.000
fib_recursive gen 4 6 5 1,113 0.003
fib_iter gen 7 6 5 1,028 0.007
loops gen 3 3 2 361 0.007
asdl_generated gen 9 8 9 512 0.017
scoped_resource gen 29 28 27 1,381 0.021
parse gen 22 25 24 938 0.024
classes gen 1 2 2 36 0.024
containers gen 4 7 5 123 0.032
tuple_return_value gen 11 16 13 248 0.044
files gen 6 6 6 101 0.057
gc_stack_roots gen 1 0 0 11 0.123
length gen 37 33 34 249 0.148
cartesian gen 71 77 70 390 0.182
escape gen 90 100 90 438 0.205
cgi gen 256 247 259 718 0.357
varargs gen 14 19 18 27 0.521
control_flow gen 135 177 134 145 0.928

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.3 11.5 0.38
gc_stack_roots gen 3.4 3.3 3.4 7.7 0.44
asdl_generated gen 3.4 3.3 3.5 7.6 0.45
escape gen 3.5 3.4 3.7 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
cgi gen 3.5 3.4 3.7 7.6 0.47
fib_iter gen 3.5 3.7 3.5 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
modules gen 3.5 3.7 3.7 7.6 0.47
fib_recursive gen 3.7 3.5 3.7 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.47
files gen 3.7 3.8 3.8 7.6 0.48
loops gen 3.7 3.7 3.5 7.6 0.48
scoped_resource gen 3.7 3.4 3.5 7.6 0.48
tuple_return_value gen 3.7 3.8 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.3 28.5 28.5 48.3 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 2 9 0.000
gc_stack_roots gen 0 1 1 9 0.000
loops gen 0 0 1 3 0.000
control_flow gen 1 1 1 11 0.091
scoped_resource gen 1 3 3 8 0.125
asdl_generated gen 1 2 1 7 0.140
modules gen 1 1 1 10 0.145
files gen 1 1 1 6 0.161
length gen 2 3 5 8 0.248
classes gen 2 1 1 7 0.251
parse gen 3 2 1 10 0.305
fib_recursive gen 3 0 1 8 0.333
containers gen 10 7 9 29 0.340
tuple_return_value gen 4 1 2 8 0.498
cartesian gen 4 3 5 8 0.499
cgi gen 5 3 1 8 0.622
varargs gen 25 19 20 30 0.837
escape gen 7 5 9 7 0.995

raw benchmark files