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 1 0 12 0.000
fib_recursive gen 5 5 5 1,010 0.005
modules gen 1 1 1 204 0.006
loops gen 2 2 2 320 0.007
fib_iter gen 6 6 6 744 0.009
asdl_generated gen 8 9 7 512 0.016
scoped_resource gen 27 32 27 1,226 0.022
parse gen 23 25 23 907 0.025
classes gen 1 1 2 33 0.035
containers gen 4 3 5 107 0.037
files gen 4 6 6 90 0.046
tuple_return_value gen 14 16 14 221 0.065
length gen 30 28 30 222 0.137
cartesian gen 68 71 69 376 0.180
escape gen 81 91 87 378 0.215
cgi gen 183 178 184 659 0.277
varargs gen 15 16 16 26 0.583
control_flow gen 124 168 125 138 0.898

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.5 0.39
cartesian gen 3.4 3.5 3.5 7.9 0.43
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
cgi gen 3.5 3.7 3.7 7.7 0.46
loops gen 3.5 3.7 3.8 7.7 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.7 3.7 3.7 7.7 0.47
fib_recursive gen 3.7 3.5 3.5 7.7 0.47
files gen 3.7 3.8 3.8 7.7 0.47
length gen 3.7 3.7 3.5 7.7 0.47
scoped_resource gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.9 3.8 3.8 8.2 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
modules gen 3.8 3.7 3.7 7.7 0.49
tuple_return_value gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.7 28.5 28.5 48.3 0.59
varargs gen 5.6 5.5 5.6 7.7 0.73

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 1 0 4 0.000
loops gen 0 1 0 3 0.000
modules gen 0 0 0 8 0.000
tuple_return_value gen 0 0 0 4 0.000
classes gen 1 2 0 6 0.193
parse gen 1 1 1 5 0.201
gc_stack_roots gen 1 0 1 5 0.229
files gen 2 0 0 7 0.293
asdl_generated gen 1 1 3 3 0.352
containers gen 9 9 8 23 0.391
length gen 2 4 2 5 0.405
cartesian gen 1 4 0 2 0.497
cgi gen 3 1 2 6 0.500
escape gen 4 3 1 5 0.801
varargs gen 9 8 8 11 0.827
fib_recursive gen 1 1 0 1 0.922
scoped_resource gen 3 0 3 3 0.987
control_flow gen 2 0 0 2 0.999

raw benchmark files