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
modules gen 0 0 1 238 0.000
fib_recursive gen 5 6 5 1,084 0.005
fib_iter gen 6 6 7 961 0.006
loops gen 3 2 1 360 0.007
asdl_generated gen 9 8 9 519 0.017
scoped_resource gen 28 29 26 1,345 0.021
parse gen 20 27 28 951 0.022
containers gen 6 5 4 127 0.049
tuple_return_value gen 13 13 14 247 0.053
classes gen 2 2 1 33 0.054
files gen 6 7 6 96 0.058
gc_stack_roots gen 1 1 0 11 0.063
length gen 32 34 33 259 0.125
cartesian gen 71 77 69 397 0.178
escape gen 95 99 90 426 0.224
cgi gen 256 252 259 736 0.348
varargs gen 16 21 13 29 0.544
control_flow gen 134 176 133 142 0.942

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.2 11.5 0.38
asdl_generated gen 3.4 3.4 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.3 7.7 0.44
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.7 3.8 3.9 8.0 0.46
escape gen 3.4 3.4 3.4 7.3 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
cgi gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.7 3.7 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
tuple_return_value gen 3.7 3.8 3.8 7.7 0.47
control_flow gen 3.7 3.8 3.7 7.6 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
files gen 3.7 3.8 3.8 7.6 0.48
modules gen 3.7 3.4 3.7 7.6 0.48
containers gen 28.5 28.4 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
loops gen 0 1 2 7 0.000
gc_stack_roots gen 1 0 1 10 0.069
classes gen 1 1 1 10 0.090
fib_iter gen 1 2 0 9 0.112
files gen 1 0 1 9 0.123
asdl_generated gen 1 2 1 7 0.142
cgi gen 2 3 1 10 0.200
control_flow gen 2 2 3 10 0.201
scoped_resource gen 2 3 4 10 0.202
fib_recursive gen 1 0 1 5 0.207
modules gen 1 1 0 5 0.282
containers gen 7 9 10 25 0.289
tuple_return_value gen 2 4 1 6 0.335
escape gen 3 6 7 7 0.430
cartesian gen 4 5 6 8 0.500
parse gen 5 0 2 9 0.569
varargs gen 23 18 26 27 0.840
length gen 6 3 6 6 1.013

raw benchmark files