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 10 0.000
loops gen 1 2 1 356 0.002
fib_recursive gen 5 6 4 1,156 0.004
modules gen 1 1 1 235 0.006
fib_iter gen 6 5 7 1,010 0.006
asdl_generated gen 9 7 10 510 0.018
scoped_resource gen 24 28 26 1,342 0.018
parse gen 22 26 22 952 0.024
containers gen 5 4 6 130 0.037
files gen 4 6 5 101 0.038
tuple_return_value gen 13 13 11 252 0.051
classes gen 2 2 1 29 0.062
length gen 36 34 36 238 0.149
cartesian gen 71 78 68 437 0.161
escape gen 92 101 92 425 0.216
cgi gen 255 251 256 722 0.353
varargs gen 19 18 15 27 0.706
control_flow gen 134 178 133 145 0.923

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.5 0.39
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.4 3.5 3.4 7.6 0.45
cartesian gen 3.5 3.5 3.4 7.7 0.46
fib_iter gen 3.5 3.5 3.5 7.7 0.46
modules gen 3.5 3.7 3.4 7.7 0.46
cgi gen 3.5 3.5 3.4 7.6 0.47
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
gc_stack_roots gen 3.5 3.3 3.4 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
files gen 3.7 3.7 3.8 7.7 0.47
loops gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.5 7.6 0.48
parse gen 3.8 3.8 3.8 7.9 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.3 28.5 48.3 0.59
varargs gen 5.5 5.5 5.5 7.5 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
modules gen 0 0 0 8 0.000
classes gen 1 1 2 13 0.070
gc_stack_roots gen 1 1 0 10 0.139
asdl_generated gen 1 3 0 7 0.142
control_flow gen 1 0 2 6 0.167
fib_recursive gen 2 0 2 9 0.200
fib_iter gen 1 2 0 5 0.201
loops gen 2 1 2 7 0.238
tuple_return_value gen 2 3 4 7 0.285
parse gen 3 1 4 10 0.292
files gen 3 1 2 9 0.321
length gen 3 3 3 9 0.329
containers gen 9 10 7 22 0.396
cgi gen 5 1 4 11 0.454
cartesian gen 5 3 6 10 0.505
scoped_resource gen 6 4 4 11 0.540
varargs gen 19 20 23 29 0.658
escape gen 5 5 5 7 0.714

raw benchmark files