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 12 0.000
loops gen 2 3 2 360 0.005
fib_recursive gen 5 6 6 1,100 0.005
modules gen 1 1 0 240 0.006
fib_iter gen 7 6 5 965 0.007
asdl_generated gen 6 8 10 512 0.012
scoped_resource gen 24 32 29 1,363 0.018
parse gen 23 25 22 960 0.023
classes gen 1 1 1 34 0.026
containers gen 6 4 5 128 0.045
tuple_return_value gen 13 17 14 244 0.054
files gen 6 5 7 97 0.058
length gen 38 34 32 241 0.156
cartesian gen 74 72 71 393 0.188
escape gen 93 99 94 478 0.194
cgi gen 270 247 258 742 0.364
varargs gen 15 19 12 26 0.568
control_flow gen 135 182 134 143 0.942

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.3 3.3 3.3 7.7 0.42
gc_stack_roots gen 3.4 3.3 3.4 7.7 0.44
scoped_resource gen 3.4 3.5 3.7 7.6 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.7 3.7 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
cartesian gen 3.5 3.4 3.5 7.6 0.47
fib_iter gen 3.5 3.4 3.7 7.6 0.47
fib_recursive 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.7 3.5 7.6 0.47
tuple_return_value gen 3.7 3.8 3.8 7.7 0.47
control_flow gen 3.7 3.8 3.8 7.6 0.48
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.6 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 2 2 9 0.000
modules gen 0 1 1 4 0.000
control_flow gen 1 1 2 9 0.111
fib_recursive gen 1 0 0 8 0.129
loops gen 1 0 1 6 0.140
files gen 1 2 0 8 0.141
length gen 1 3 7 6 0.166
gc_stack_roots gen 1 0 1 8 0.171
classes gen 2 1 1 8 0.219
tuple_return_value gen 2 0 1 8 0.251
parse gen 3 2 3 11 0.279
containers gen 8 11 9 24 0.322
cgi gen 3 5 2 8 0.375
cartesian gen 3 8 4 6 0.499
escape gen 5 6 3 9 0.555
asdl_generated gen 4 2 0 7 0.564
varargs gen 24 20 26 30 0.787
scoped_resource gen 6 0 1 6 1.010

raw benchmark files