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 4 5 1,099 0.005
modules gen 1 1 1 215 0.005
loops gen 2 1 1 313 0.007
fib_iter gen 5 5 5 741 0.007
asdl_generated gen 8 9 7 511 0.017
scoped_resource gen 27 27 29 1,241 0.021
classes gen 1 2 0 34 0.022
parse gen 22 26 24 907 0.024
containers gen 4 3 6 109 0.036
tuple_return_value gen 12 16 12 218 0.056
files gen 5 6 5 90 0.056
gc_stack_roots gen 1 1 1 12 0.092
length gen 30 31 31 227 0.133
cartesian gen 71 74 63 354 0.200
escape gen 84 92 83 374 0.226
cgi gen 186 175 183 661 0.281
varargs gen 13 10 16 24 0.551
control_flow gen 125 167 125 135 0.925

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.6 0.38
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
cartesian gen 3.5 3.5 3.4 7.9 0.45
asdl_generated gen 3.5 3.4 3.5 7.6 0.47
cgi gen 3.7 3.5 3.5 7.9 0.47
fib_recursive gen 3.7 3.8 3.7 7.9 0.47
parse gen 3.8 3.9 3.8 8.1 0.47
escape gen 3.7 3.7 3.7 7.7 0.47
length gen 3.7 3.5 3.7 7.7 0.47
loops gen 3.7 3.5 3.7 7.7 0.47
modules gen 3.7 3.7 3.5 7.7 0.47
scoped_resource gen 3.7 3.4 3.5 7.7 0.47
tuple_return_value gen 3.8 3.9 3.8 7.9 0.48
fib_iter gen 3.8 3.7 3.7 7.6 0.50
files gen 3.8 3.7 3.9 7.6 0.50
control_flow gen 3.9 3.8 3.9 7.7 0.51
containers gen 28.3 28.6 28.5 48.2 0.59
varargs gen 5.4 5.4 5.6 7.7 0.69

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
cgi gen 0 3 3 4 0.000
fib_recursive gen 0 1 0 2 0.000
gc_stack_roots gen 0 0 0 5 0.000
loops gen 0 2 1 2 0.000
modules gen 0 0 0 6 0.000
cartesian gen 1 2 6 7 0.143
escape gen 1 2 2 7 0.144
control_flow gen 1 1 0 6 0.166
files gen 1 0 1 5 0.204
fib_iter gen 1 1 1 4 0.267
parse gen 2 0 0 7 0.285
classes gen 2 0 2 5 0.306
tuple_return_value gen 2 0 2 5 0.407
containers gen 9 10 7 21 0.418
length gen 2 1 1 4 0.488
asdl_generated gen 2 1 2 4 0.530
scoped_resource gen 3 4 1 5 0.609
varargs gen 11 13 8 13 0.861

raw benchmark files