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 1 1 14 0.000
fib_recursive gen 4 6 5 1,104 0.004
loops gen 2 2 2 367 0.005
modules gen 1 1 1 232 0.006
fib_iter gen 6 7 5 963 0.006
asdl_generated gen 7 9 9 510 0.014
scoped_resource gen 29 26 28 1,350 0.021
parse gen 24 24 24 942 0.025
containers gen 7 6 6 128 0.054
tuple_return_value gen 15 16 14 245 0.062
files gen 7 7 7 99 0.071
classes gen 3 0 1 33 0.086
length gen 37 32 36 248 0.148
cartesian gen 69 68 68 398 0.173
escape gen 95 98 93 441 0.215
cgi gen 257 252 254 744 0.345
varargs gen 20 17 14 35 0.565
control_flow gen 136 175 135 144 0.944

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.6 0.38
gc_stack_roots gen 3.3 3.4 3.4 7.7 0.42
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.4 3.5 3.5 7.6 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
fib_iter gen 3.5 3.5 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 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
length gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
parse gen 3.8 3.9 3.8 8.1 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
files gen 3.7 3.8 3.8 7.6 0.48
loops gen 3.7 3.7 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.7 28.3 28.3 48.1 0.60
varargs gen 5.4 5.5 5.5 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 3 2 10 0.000
control_flow gen 0 3 0 9 0.000
files gen 0 0 0 9 0.000
modules gen 0 0 1 7 0.000
tuple_return_value gen 0 1 1 8 0.000
loops gen 1 1 1 9 0.094
fib_iter gen 1 0 2 8 0.128
parse gen 2 3 2 11 0.180
fib_recursive gen 2 0 1 9 0.197
gc_stack_roots gen 1 0 0 6 0.224
scoped_resource gen 2 7 2 9 0.228
length gen 2 5 3 7 0.283
containers gen 7 8 8 24 0.287
asdl_generated gen 3 1 1 8 0.374
cgi gen 3 2 4 8 0.375
escape gen 4 7 6 9 0.442
cartesian gen 8 11 6 10 0.797
varargs gen 19 21 24 22 0.854

raw benchmark files