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 4 6 6 1,127 0.004
modules gen 1 1 0 231 0.006
loops gen 3 2 2 352 0.007
fib_iter gen 7 6 7 974 0.007
asdl_generated gen 9 8 8 518 0.017
scoped_resource gen 25 29 28 1,373 0.018
parse gen 25 24 24 944 0.026
classes gen 1 3 1 31 0.029
containers gen 4 6 5 126 0.033
tuple_return_value gen 14 13 14 249 0.058
files gen 6 7 7 97 0.060
gc_stack_roots gen 1 0 1 11 0.124
length gen 34 33 34 243 0.139
cartesian gen 71 67 69 435 0.163
escape gen 91 98 91 441 0.207
cgi gen 258 249 255 757 0.340
varargs gen 19 17 16 27 0.697
control_flow gen 135 179 135 146 0.927

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.3 11.5 0.39
asdl_generated gen 3.4 3.4 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
fib_recursive gen 3.5 3.4 3.7 7.7 0.46
length gen 3.5 3.7 3.5 7.7 0.46
modules gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.5 7.6 0.47
cgi gen 3.5 3.4 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
tuple_return_value gen 3.7 3.7 3.5 7.7 0.47
parse gen 3.8 3.9 3.7 8.0 0.47
loops gen 3.7 3.4 3.5 7.6 0.48
files gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.3 28.5 28.6 48.4 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 0 8 0.000
gc_stack_roots gen 0 1 0 9 0.000
loops gen 0 2 1 7 0.000
modules gen 0 0 1 11 0.000
files gen 1 0 0 12 0.081
control_flow gen 1 0 1 10 0.100
asdl_generated gen 1 2 2 8 0.124
tuple_return_value gen 1 3 2 7 0.146
classes gen 2 0 2 12 0.151
parse gen 2 3 2 12 0.171
fib_recursive gen 2 0 0 6 0.295
containers gen 9 9 8 27 0.349
cgi gen 3 4 4 7 0.430
escape gen 6 7 6 10 0.596
scoped_resource gen 5 2 2 8 0.621
cartesian gen 5 13 6 8 0.623
varargs gen 20 22 23 29 0.683
length gen 5 4 5 7 0.710

raw benchmark files