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
fib_recursive gen 5 5 4 1,068 0.004
loops gen 1 3 2 310 0.005
modules gen 1 1 1 211 0.005
fib_iter gen 6 6 6 741 0.007
asdl_generated gen 7 10 8 510 0.013
scoped_resource gen 27 30 28 1,238 0.022
parse gen 23 24 22 905 0.025
classes gen 1 2 0 30 0.049
files gen 5 4 5 91 0.056
containers gen 6 6 4 104 0.061
tuple_return_value gen 14 14 14 217 0.066
gc_stack_roots gen 1 1 1 12 0.090
length gen 27 30 28 223 0.122
cartesian gen 65 73 67 357 0.181
escape gen 84 93 83 380 0.222
cgi gen 185 178 185 666 0.277
varargs gen 15 16 10 24 0.613
control_flow gen 125 168 124 134 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.5 4.5 4.6 11.6 0.38
escape gen 3.5 3.5 3.5 7.9 0.45
asdl_generated gen 3.5 3.4 3.4 7.7 0.46
fib_iter gen 3.5 3.8 3.8 7.7 0.46
gc_stack_roots gen 3.5 3.5 3.4 7.7 0.46
parse gen 3.8 3.9 3.8 8.3 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
control_flow gen 3.7 3.7 3.7 7.9 0.47
cartesian gen 3.7 3.5 3.5 7.7 0.47
fib_recursive gen 3.7 3.5 3.7 7.7 0.47
modules gen 3.7 3.7 3.7 7.7 0.47
scoped_resource gen 3.7 3.5 3.7 7.7 0.47
tuple_return_value gen 3.7 3.7 3.8 7.7 0.47
loops gen 3.8 3.8 3.8 7.9 0.48
length gen 3.8 3.7 3.5 7.7 0.49
files gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.5 28.7 48.2 0.59
varargs gen 5.5 5.8 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 0 0 5 0.000
modules gen 0 0 0 5 0.000
tuple_return_value gen 0 2 1 6 0.000
classes gen 1 1 2 9 0.082
parse gen 1 3 2 8 0.125
control_flow gen 1 0 2 7 0.143
fib_recursive gen 1 1 2 6 0.152
loops gen 1 0 0 4 0.182
containers gen 6 6 8 29 0.218
fib_iter gen 1 0 0 4 0.231
escape gen 1 3 3 4 0.251
files gen 1 2 1 4 0.255
asdl_generated gen 3 0 3 6 0.477
cartesian gen 4 2 1 6 0.675
varargs gen 9 8 14 12 0.735
scoped_resource gen 4 1 2 4 0.991
cgi gen 3 1 0 3 0.999
length gen 5 2 4 3 1.686

raw benchmark files