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
loops gen 2 3 3 361 0.005
fib_recursive gen 5 6 6 1,096 0.005
fib_iter gen 6 4 7 1,103 0.006
asdl_generated gen 8 10 6 515 0.015
scoped_resource gen 28 27 30 1,388 0.020
parse gen 24 26 22 951 0.025
containers gen 5 5 6 120 0.041
files gen 5 5 6 99 0.049
tuple_return_value gen 13 14 12 257 0.050
classes gen 2 1 1 35 0.050
gc_stack_roots gen 1 1 1 12 0.112
length gen 36 31 36 240 0.149
cartesian gen 67 75 65 390 0.172
escape gen 93 99 93 429 0.216
cgi gen 258 250 259 769 0.336
varargs gen 13 16 20 25 0.521
control_flow gen 137 177 134 144 0.956

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.5 11.5 0.39
gc_stack_roots gen 3.3 3.3 3.4 7.6 0.43
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cartesian gen 3.4 3.5 3.4 7.6 0.45
cgi gen 3.5 3.5 3.7 7.7 0.46
fib_iter gen 3.5 3.7 3.5 7.7 0.46
escape gen 3.5 3.5 3.4 7.6 0.47
fib_recursive gen 3.5 3.7 3.5 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.4 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
files gen 3.7 3.7 3.8 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.47
modules gen 3.7 3.7 3.4 7.6 0.48
tuple_return_value gen 3.7 3.8 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.3 28.5 28.5 48.2 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
gc_stack_roots gen 0 1 0 8 0.000
loops gen 1 0 0 9 0.094
classes gen 1 1 2 8 0.110
control_flow gen 1 3 1 8 0.126
fib_iter gen 1 3 0 8 0.126
fib_recursive gen 1 0 0 8 0.128
cgi gen 2 2 1 9 0.222
files gen 2 2 1 8 0.244
containers gen 9 9 7 32 0.275
parse gen 2 1 4 7 0.281
asdl_generated gen 2 0 4 7 0.282
modules gen 1 1 0 5 0.283
length gen 3 5 3 9 0.332
tuple_return_value gen 2 2 3 5 0.390
scoped_resource gen 3 4 2 6 0.495
escape gen 6 5 5 8 0.747
cartesian gen 7 5 9 9 0.768
varargs gen 26 22 18 33 0.789

raw benchmark files