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 0 1 13 0.000
fib_recursive gen 6 6 8 1,178 0.005
modules gen 1 1 0 240 0.006
loops gen 3 3 2 360 0.007
fib_iter gen 7 7 6 963 0.007
asdl_generated gen 9 8 8 501 0.018
scoped_resource gen 25 28 27 1,353 0.019
parse gen 25 25 22 939 0.026
containers gen 4 4 7 127 0.030
files gen 5 6 6 100 0.049
tuple_return_value gen 15 15 14 250 0.060
classes gen 3 2 1 37 0.072
length gen 34 33 34 243 0.138
cartesian gen 65 78 73 389 0.166
escape gen 97 102 96 431 0.224
cgi gen 262 246 256 732 0.358
varargs gen 22 15 15 33 0.661
control_flow gen 132 177 135 160 0.825

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.3 11.6 0.38
gc_stack_roots gen 3.3 3.4 3.3 7.7 0.42
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
cartesian gen 3.4 3.4 3.4 7.6 0.45
fib_iter gen 3.4 3.5 3.5 7.5 0.46
escape gen 3.5 3.4 3.5 7.7 0.46
modules gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.4 3.5 7.6 0.47
loops gen 3.7 3.5 3.7 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.47
control_flow gen 3.7 3.7 3.8 7.6 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
length gen 3.7 3.7 3.7 7.6 0.48
scoped_resource gen 3.7 3.5 3.4 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
files gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.4 28.4 28.3 48.2 0.59
varargs gen 5.6 5.5 5.4 7.7 0.73

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 2 6 0.000
fib_iter gen 0 0 1 7 0.000
fib_recursive gen 0 0 1 8 0.000
loops gen 0 0 1 10 0.000
modules gen 0 1 1 8 0.000
tuple_return_value gen 0 1 1 7 0.000
parse gen 1 2 3 7 0.141
asdl_generated gen 1 2 2 6 0.165
gc_stack_roots gen 1 1 0 7 0.195
files gen 2 1 1 8 0.243
cgi gen 2 7 2 5 0.400
containers gen 10 11 6 24 0.401
escape gen 4 4 2 7 0.575
control_flow gen 3 2 2 5 0.600
varargs gen 17 24 24 23 0.733
length gen 5 3 5 6 0.825
cartesian gen 9 2 2 8 1.118
scoped_resource gen 5 3 4 3 1.630

raw benchmark files