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 236 0.000
loops gen 2 3 1 364 0.005
fib_recursive gen 5 5 6 1,078 0.005
fib_iter gen 7 6 6 945 0.008
asdl_generated gen 9 8 8 510 0.018
scoped_resource gen 27 31 27 1,362 0.020
parse gen 21 22 21 951 0.023
classes gen 1 1 2 30 0.032
containers gen 6 3 6 122 0.050
tuple_return_value gen 13 16 13 244 0.055
files gen 7 5 6 95 0.071
gc_stack_roots gen 1 0 1 11 0.129
length gen 34 33 36 248 0.136
cartesian gen 68 70 68 389 0.175
escape gen 89 104 90 433 0.205
cgi gen 256 251 258 776 0.330
varargs gen 17 16 19 25 0.679
control_flow gen 134 177 137 147 0.912

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.3 4.3 11.5 0.39
asdl_generated gen 3.4 3.3 3.3 7.7 0.44
fib_recursive gen 3.4 3.5 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
cgi gen 3.5 3.4 3.5 7.7 0.46
fib_iter gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.4 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
files gen 3.7 3.8 3.8 7.7 0.47
parse gen 3.8 3.8 3.7 8.0 0.48
control_flow gen 3.7 3.8 3.8 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
scoped_resource gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
containers gen 28.7 28.5 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
files gen 0 2 1 11 0.000
gc_stack_roots gen 0 1 1 10 0.000
fib_recursive gen 1 1 0 10 0.104
loops gen 1 0 2 7 0.123
control_flow gen 1 2 1 7 0.143
classes gen 2 2 1 13 0.148
tuple_return_value gen 2 1 2 11 0.173
asdl_generated gen 1 2 2 5 0.202
modules gen 1 1 1 7 0.205
containers gen 8 11 8 31 0.265
scoped_resource gen 3 2 3 9 0.338
parse gen 4 5 4 11 0.355
varargs gen 21 22 19 39 0.538
cgi gen 4 1 3 7 0.570
length gen 5 4 3 8 0.622
escape gen 8 6 8 10 0.799
cartesian gen 7 10 7 8 0.874

raw benchmark files