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 0 233 0.000
loops gen 2 3 1 359 0.005
fib_recursive gen 5 4 6 1,091 0.005
fib_iter gen 6 6 5 987 0.006
asdl_generated gen 8 6 8 508 0.016
scoped_resource gen 26 26 29 1,368 0.019
parse gen 22 24 23 988 0.022
containers gen 5 6 4 126 0.042
tuple_return_value gen 12 13 12 246 0.049
classes gen 2 3 2 33 0.054
files gen 7 6 5 100 0.067
gc_stack_roots gen 1 1 0 11 0.129
length gen 34 33 40 245 0.138
cartesian gen 71 76 68 406 0.174
escape gen 92 102 89 435 0.211
cgi gen 250 246 255 753 0.332
varargs gen 20 17 19 23 0.875
control_flow gen 132 176 131 146 0.906

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
cgi gen 3.4 3.4 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
asdl_generated gen 3.5 3.4 3.4 7.7 0.46
scoped_resource gen 3.5 3.5 3.7 7.7 0.46
escape gen 3.5 3.5 3.4 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
length gen 3.7 3.5 3.5 7.9 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
fib_iter gen 3.7 3.5 3.5 7.6 0.48
fib_recursive gen 3.7 3.5 3.7 7.6 0.48
modules gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.5 28.5 48.4 0.59
varargs gen 5.5 5.4 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
files gen 0 1 2 8 0.000
gc_stack_roots gen 0 0 1 9 0.000
classes gen 1 0 1 11 0.080
fib_iter gen 1 1 2 10 0.100
loops gen 1 0 2 8 0.107
cgi gen 1 6 5 6 0.167
asdl_generated gen 2 4 2 11 0.180
modules gen 1 2 1 7 0.209
fib_recursive gen 1 3 0 5 0.209
cartesian gen 4 6 7 12 0.337
containers gen 8 9 10 25 0.337
tuple_return_value gen 3 4 3 8 0.375
control_flow gen 3 2 4 7 0.429
parse gen 4 3 2 9 0.457
scoped_resource gen 4 6 1 8 0.488
varargs gen 18 22 19 34 0.533
length gen 5 4 3 9 0.551
escape gen 6 4 9 9 0.666

raw benchmark files