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
gc_stack_roots gen 0 0 0 13 0.000
modules gen 0 0 1 213 0.000
loops gen 1 2 1 318 0.003
fib_recursive gen 4 5 5 1,025 0.004
fib_iter gen 5 6 6 739 0.007
asdl_generated gen 8 10 9 510 0.017
scoped_resource gen 28 30 28 1,230 0.023
parse gen 23 24 23 905 0.025
containers gen 3 5 5 112 0.027
classes gen 1 2 2 33 0.035
files gen 4 7 3 90 0.045
tuple_return_value gen 13 15 14 220 0.061
length gen 30 31 30 225 0.135
cartesian gen 63 72 64 359 0.176
escape gen 77 93 82 379 0.202
cgi gen 182 178 185 656 0.278
varargs gen 17 15 16 24 0.704
control_flow gen 125 167 124 136 0.918

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.3 4.3 11.5 0.38
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
cartesian gen 3.5 3.5 3.7 7.9 0.45
cgi gen 3.5 3.5 3.5 7.9 0.45
escape gen 3.5 3.5 3.5 7.9 0.45
length gen 3.5 3.7 3.8 7.9 0.45
fib_iter gen 3.7 3.7 3.8 7.9 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
fib_recursive gen 3.7 3.7 3.8 7.7 0.47
modules gen 3.7 3.5 3.8 7.7 0.47
scoped_resource gen 3.7 3.7 3.5 7.7 0.47
loops gen 3.8 3.8 3.8 7.7 0.49
files gen 3.9 3.8 3.7 7.9 0.50
tuple_return_value gen 3.9 3.5 3.8 7.9 0.50
control_flow gen 3.9 3.8 3.8 7.7 0.51
containers gen 28.4 28.6 28.5 48.4 0.59
varargs gen 5.6 5.5 5.5 7.9 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 1 1 3 0.000
tuple_return_value gen 1 1 0 7 0.137
scoped_resource gen 1 1 2 6 0.169
loops gen 1 1 1 6 0.183
modules gen 1 1 0 6 0.183
classes gen 1 0 0 5 0.221
parse gen 1 2 1 4 0.248
fib_iter gen 1 0 0 4 0.258
asdl_generated gen 1 0 1 4 0.263
gc_stack_roots gen 1 1 1 3 0.364
containers gen 9 7 7 22 0.406
varargs gen 7 9 8 15 0.464
files gen 2 0 3 4 0.509
cgi gen 3 1 1 5 0.601
length gen 2 1 2 3 0.658
fib_recursive gen 1 1 1 1 0.897
cartesian gen 5 3 4 3 1.672
escape gen 10 2 3 2 4.984

raw benchmark files