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 16 0.000
modules gen 0 0 1 234 0.000
fib_recursive gen 6 6 5 1,140 0.005
fib_iter gen 6 6 7 961 0.006
loops gen 3 3 1 363 0.007
asdl_generated gen 8 6 7 516 0.015
scoped_resource gen 26 30 27 1,352 0.019
containers gen 3 6 8 129 0.023
parse gen 22 24 23 950 0.024
tuple_return_value gen 13 13 14 247 0.052
classes gen 2 3 0 32 0.055
files gen 6 6 6 101 0.057
length gen 35 33 35 238 0.145
cartesian gen 69 71 64 403 0.171
escape gen 94 94 89 435 0.216
cgi gen 256 249 256 733 0.349
varargs gen 15 17 13 30 0.506
control_flow gen 131 177 134 144 0.912

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.5 4.5 11.6 0.37
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
cgi gen 3.4 3.4 3.5 7.6 0.45
escape gen 3.5 3.4 3.4 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
fib_iter gen 3.5 3.5 3.7 7.6 0.47
fib_recursive gen 3.5 3.7 3.5 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.7 3.5 3.5 7.9 0.47
loops gen 3.7 3.5 3.7 7.7 0.47
parse gen 3.8 3.7 3.7 8.0 0.48
files gen 3.7 3.7 3.7 7.6 0.48
modules gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
tuple_return_value gen 3.8 3.5 3.7 7.6 0.50
containers gen 28.4 28.4 28.4 48.2 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_recursive gen 0 0 1 6 0.000
loops gen 0 0 2 11 0.000
classes gen 1 0 3 10 0.088
fib_iter gen 1 1 0 9 0.111
files gen 1 1 1 6 0.160
modules gen 1 1 0 6 0.230
parse gen 3 3 3 9 0.325
tuple_return_value gen 2 4 1 6 0.326
gc_stack_roots gen 1 0 1 4 0.344
asdl_generated gen 2 4 3 6 0.365
containers gen 11 8 6 28 0.387
control_flow gen 4 2 2 9 0.442
length gen 4 4 4 9 0.452
scoped_resource gen 5 2 3 8 0.624
cgi gen 4 3 4 5 0.799
escape gen 5 11 9 6 0.833
cartesian gen 6 9 11 7 0.855
varargs gen 23 21 26 26 0.895

raw benchmark files