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
fib_recursive gen 4 4 6 1,099 0.004
loops gen 2 3 2 358 0.005
fib_iter gen 5 6 6 935 0.006
modules gen 1 0 1 241 0.006
containers gen 2 7 9 132 0.015
asdl_generated gen 8 7 8 517 0.015
scoped_resource gen 29 28 28 1,392 0.021
parse gen 23 27 22 979 0.023
classes gen 1 2 3 33 0.040
tuple_return_value gen 13 14 15 253 0.051
files gen 6 4 7 102 0.058
gc_stack_roots gen 1 0 1 12 0.111
length gen 35 33 31 241 0.144
cartesian gen 74 77 65 396 0.186
escape gen 95 101 97 429 0.221
cgi gen 255 248 258 727 0.351
varargs gen 14 17 17 29 0.484
control_flow gen 136 178 139 152 0.894

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.3 4.3 11.5 0.38
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
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_recursive gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.4 7.6 0.47
loops gen 3.5 3.7 3.4 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.7 3.7 3.7 7.7 0.47
tuple_return_value gen 3.7 3.8 3.8 7.7 0.47
parse gen 3.8 3.7 3.7 8.0 0.48
fib_iter gen 3.7 3.5 3.7 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.7 0.49
files gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.4 28.4 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 9 0.000
modules gen 0 1 1 7 0.000
loops gen 1 0 1 7 0.120
files gen 1 3 0 8 0.121
classes gen 1 1 0 10 0.132
control_flow gen 1 1 1 7 0.143
scoped_resource gen 1 4 2 7 0.146
cartesian gen 2 3 10 9 0.222
fib_iter gen 2 1 1 6 0.297
asdl_generated gen 2 3 2 6 0.330
fib_recursive gen 2 3 0 5 0.358
parse gen 3 0 4 8 0.374
escape gen 4 5 2 10 0.404
cgi gen 4 4 4 9 0.444
length gen 4 3 7 8 0.497
tuple_return_value gen 2 3 0 3 0.663
containers gen 12 7 5 18 0.693
varargs gen 24 22 21 28 0.859

raw benchmark files