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 0 11 0.000
modules gen 0 0 1 239 0.000
loops gen 1 3 3 364 0.002
fib_recursive gen 6 5 4 1,108 0.006
fib_iter gen 7 6 5 972 0.007
asdl_generated gen 7 10 8 522 0.014
scoped_resource gen 28 29 26 1,400 0.020
classes gen 1 1 2 38 0.024
parse gen 24 25 24 927 0.026
files gen 4 6 6 97 0.041
containers gen 6 4 4 123 0.049
tuple_return_value gen 13 14 12 249 0.054
length gen 36 30 33 239 0.149
cartesian gen 70 72 69 397 0.177
escape gen 96 100 98 438 0.219
cgi gen 256 251 257 740 0.346
varargs gen 16 19 16 26 0.613
control_flow gen 135 178 136 147 0.916

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
asdl_generated gen 3.4 3.3 3.5 7.7 0.44
cartesian gen 3.4 3.5 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
fib_recursive gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
parse gen 3.8 3.8 3.9 8.1 0.47
cgi gen 3.5 3.4 3.5 7.5 0.47
files gen 3.7 3.5 3.5 7.7 0.47
tuple_return_value gen 3.7 3.8 3.8 7.7 0.47
fib_iter gen 3.7 3.5 3.5 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.5 28.5 28.5 48.4 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 2 0 10 0.000
fib_iter gen 0 1 2 8 0.000
fib_recursive gen 0 1 2 10 0.000
parse gen 1 2 2 11 0.093
gc_stack_roots gen 1 1 1 10 0.145
modules gen 1 1 1 9 0.162
loops gen 2 0 0 8 0.212
containers gen 8 11 10 35 0.230
length gen 3 7 6 12 0.255
files gen 3 1 1 11 0.277
scoped_resource gen 3 2 4 11 0.278
classes gen 2 2 1 6 0.299
tuple_return_value gen 2 3 3 5 0.382
escape gen 5 5 2 9 0.556
cgi gen 5 1 5 8 0.624
varargs gen 22 19 22 31 0.707
cartesian gen 6 8 6 8 0.745
asdl_generated gen 3 0 2 2 1.404

raw benchmark files