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
classes gen 0 2 2 36 0.000
gc_stack_roots gen 0 1 0 14 0.000
loops gen 1 3 3 373 0.002
fib_recursive gen 6 5 6 1,091 0.006
modules gen 2 0 1 233 0.007
fib_iter gen 7 7 6 961 0.008
asdl_generated gen 9 7 8 538 0.017
scoped_resource gen 27 29 27 1,395 0.019
parse gen 24 24 22 945 0.025
containers gen 4 6 4 126 0.032
tuple_return_value gen 14 17 13 252 0.055
files gen 6 5 7 101 0.059
length gen 35 33 37 250 0.140
cartesian gen 72 71 70 393 0.182
escape gen 93 104 93 419 0.222
cgi gen 255 250 256 770 0.332
varargs gen 16 17 14 28 0.560
control_flow gen 135 176 134 148 0.907

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.2 4.2 11.5 0.38
cgi gen 3.4 3.4 3.5 7.7 0.44
escape gen 3.4 3.5 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.3 7.7 0.44
loops gen 3.4 3.7 3.7 7.7 0.44
asdl_generated gen 3.4 3.3 3.3 7.6 0.45
modules gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.9 3.8 8.1 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
fib_iter gen 3.7 3.5 3.5 7.7 0.47
files gen 3.7 3.7 3.8 7.7 0.47
length gen 3.7 3.7 3.7 7.6 0.48
scoped_resource gen 3.7 3.4 3.7 7.6 0.48
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.4 28.7 28.5 48.4 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 0 1 12 0.000
fib_recursive gen 0 1 0 7 0.000
modules gen 0 2 0 10 0.000
files gen 1 2 0 9 0.111
tuple_return_value gen 1 0 2 5 0.197
control_flow gen 1 3 2 5 0.200
gc_stack_roots gen 1 0 1 7 0.204
loops gen 2 0 0 8 0.230
parse gen 2 3 4 9 0.231
classes gen 3 1 1 9 0.355
containers gen 10 9 10 28 0.361
scoped_resource gen 3 4 3 8 0.374
escape gen 5 4 6 10 0.499
asdl_generated gen 1 3 2 2 0.501
cartesian gen 5 8 5 8 0.620
varargs gen 23 21 24 30 0.751
cgi gen 5 3 2 6 0.831
length gen 4 4 2 4 0.999

raw benchmark files