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 1 2 312 0.004
fib_recursive gen 4 4 6 1,018 0.004
modules gen 1 1 1 211 0.006
fib_iter gen 6 7 7 796 0.008
asdl_generated gen 9 9 9 521 0.017
scoped_resource gen 29 30 28 1,231 0.023
parse gen 23 24 23 906 0.025
containers gen 4 4 6 118 0.035
classes gen 1 1 2 31 0.037
files gen 5 6 4 92 0.058
tuple_return_value gen 13 16 13 224 0.060
gc_stack_roots gen 1 0 1 12 0.096
length gen 31 28 30 230 0.136
cartesian gen 67 71 66 360 0.187
escape gen 82 92 84 384 0.214
cgi gen 184 176 184 656 0.281
varargs gen 11 15 15 24 0.461
control_flow gen 125 168 126 139 0.898

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.3 4.5 11.8 0.38
asdl_generated gen 3.5 3.5 3.4 7.7 0.46
gc_stack_roots gen 3.5 3.5 3.4 7.7 0.46
length gen 3.5 3.7 3.7 7.7 0.46
loops gen 3.5 3.7 3.8 7.7 0.46
escape gen 3.5 3.7 3.5 7.6 0.47
cartesian gen 3.7 3.5 3.7 7.9 0.47
tuple_return_value gen 3.7 3.8 3.8 7.9 0.47
cgi gen 3.7 3.5 3.5 7.7 0.47
fib_iter gen 3.7 3.8 3.5 7.7 0.47
fib_recursive gen 3.7 3.7 3.8 7.7 0.47
scoped_resource gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.9 0.48
modules gen 3.8 3.8 3.5 7.9 0.48
parse gen 3.9 3.8 3.8 8.1 0.48
files gen 3.9 3.8 3.8 7.7 0.51
containers gen 28.8 28.3 28.5 48.4 0.60
varargs gen 5.6 5.6 5.6 7.7 0.73

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 0 0 4 0.000
gc_stack_roots gen 0 1 0 5 0.000
modules gen 0 0 0 8 0.000
classes gen 1 2 0 8 0.143
control_flow gen 1 0 0 5 0.200
files gen 1 0 3 5 0.214
loops gen 1 1 0 5 0.222
asdl_generated gen 1 1 1 4 0.238
tuple_return_value gen 1 0 2 4 0.257
cgi gen 2 2 2 6 0.332
scoped_resource gen 1 2 2 3 0.340
fib_recursive gen 2 2 0 5 0.369
cartesian gen 2 4 2 5 0.401
parse gen 1 2 1 2 0.498
containers gen 9 9 7 15 0.612
escape gen 3 2 1 4 0.753
varargs gen 13 10 9 13 1.005
length gen 1 4 2 0 inf

raw benchmark files