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 1 1 239 0.000
fib_recursive gen 4 5 5 1,111 0.004
loops gen 2 2 3 361 0.005
fib_iter gen 6 6 7 1,035 0.006
asdl_generated gen 9 10 8 527 0.017
scoped_resource gen 27 28 29 1,357 0.020
parse gen 25 25 22 950 0.026
containers gen 5 3 7 131 0.038
gc_stack_roots gen 1 0 0 14 0.049
tuple_return_value gen 13 16 15 246 0.052
classes gen 2 2 2 33 0.054
files gen 6 4 6 101 0.057
length gen 36 30 34 239 0.148
cartesian gen 66 76 71 398 0.166
escape gen 93 101 93 431 0.216
cgi gen 258 241 241 718 0.359
varargs gen 20 12 14 29 0.707
control_flow gen 134 176 142 147 0.909

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.5 11.5 0.38
gc_stack_roots gen 3.4 3.4 3.3 7.7 0.44
asdl_generated gen 3.4 3.3 3.3 7.6 0.45
escape gen 3.4 3.4 3.5 7.6 0.45
fib_iter gen 3.5 3.5 3.5 7.7 0.46
length gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.7 3.4 7.7 0.46
cartesian gen 3.5 3.4 3.4 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.7 8.1 0.47
modules gen 3.7 3.7 3.5 7.6 0.48
cgi gen 3.7 3.4 3.5 7.5 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.7 3.7 7.6 0.50
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.5 28.5 48.3 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 1 1 0 10 0.084
classes gen 1 1 1 9 0.098
gc_stack_roots gen 1 1 1 6 0.114
fib_iter gen 1 1 0 8 0.126
files gen 1 3 1 6 0.159
cgi gen 2 5 4 10 0.200
parse gen 2 2 3 9 0.219
tuple_return_value gen 2 1 0 9 0.221
fib_recursive gen 2 1 1 8 0.223
modules gen 1 0 0 6 0.244
asdl_generated gen 1 0 2 4 0.249
containers gen 9 11 7 26 0.346
length gen 3 6 4 8 0.380
control_flow gen 2 3 0 4 0.499
scoped_resource gen 4 5 1 7 0.563
varargs gen 18 26 25 28 0.659
escape gen 6 4 5 6 1.000
cartesian gen 9 4 4 8 1.124

raw benchmark files