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
loops gen 1 2 3 358 0.002
fib_recursive gen 5 6 4 1,102 0.004
modules gen 1 0 1 229 0.006
fib_iter gen 7 6 6 959 0.008
asdl_generated gen 9 9 9 507 0.018
scoped_resource gen 27 28 28 1,333 0.021
parse gen 21 27 23 935 0.022
containers gen 6 6 6 128 0.046
classes gen 2 1 1 35 0.052
tuple_return_value gen 14 17 11 250 0.058
files gen 7 5 6 98 0.071
gc_stack_roots gen 1 0 0 16 0.089
length gen 33 32 34 247 0.134
cartesian gen 72 75 70 404 0.177
escape gen 94 101 92 422 0.223
cgi gen 265 250 257 735 0.361
varargs gen 18 17 18 28 0.659
control_flow gen 135 175 134 159 0.848

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.3 11.5 0.38
cartesian gen 3.4 3.4 3.4 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
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
cgi gen 3.4 3.5 3.4 7.6 0.45
scoped_resource gen 3.4 3.5 3.5 7.6 0.45
fib_iter gen 3.5 3.7 3.5 7.7 0.46
fib_recursive gen 3.5 3.5 3.7 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
modules gen 3.5 3.7 3.5 7.6 0.47
files gen 3.7 3.8 3.8 7.7 0.47
length gen 3.7 3.7 3.7 7.7 0.47
loops gen 3.7 3.7 3.5 7.7 0.47
control_flow gen 3.8 3.8 3.8 7.7 0.49
tuple_return_value gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.4 28.3 28.6 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_iter gen 0 1 1 9 0.000
files gen 0 2 1 9 0.000
gc_stack_roots gen 0 2 1 4 0.000
modules gen 0 1 0 10 0.000
tuple_return_value gen 1 0 4 10 0.096
classes gen 1 2 1 8 0.114
asdl_generated gen 1 1 1 7 0.145
control_flow gen 1 3 1 5 0.200
loops gen 2 2 0 6 0.287
containers gen 8 9 7 27 0.289
fib_recursive gen 2 0 2 6 0.301
scoped_resource gen 3 4 3 8 0.381
escape gen 4 4 7 10 0.400
cartesian gen 4 5 5 10 0.403
cgi gen 3 2 4 7 0.429
parse gen 5 1 3 9 0.547
varargs gen 20 22 20 31 0.661
length gen 6 4 4 7 0.858

raw benchmark files