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 0 231 0.000
loops gen 1 2 1 373 0.002
fib_recursive gen 4 4 5 1,096 0.004
fib_iter gen 6 6 6 965 0.006
asdl_generated gen 7 8 7 510 0.014
scoped_resource gen 28 28 26 1,390 0.020
parse gen 25 24 24 961 0.026
containers gen 6 5 8 131 0.048
classes gen 2 3 3 33 0.055
files gen 6 5 7 100 0.056
tuple_return_value gen 15 14 12 245 0.061
gc_stack_roots gen 1 1 0 13 0.105
length gen 31 32 35 239 0.130
cartesian gen 66 72 66 390 0.168
escape gen 92 102 96 423 0.218
cgi gen 260 249 254 730 0.356
varargs gen 16 21 17 28 0.576
control_flow gen 135 182 135 159 0.849

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.3 11.6 0.37
asdl_generated gen 3.4 3.3 3.3 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.4 7.7 0.44
escape gen 3.4 3.5 3.4 7.6 0.45
loops gen 3.5 3.7 3.7 7.9 0.45
fib_iter gen 3.5 3.5 3.5 7.7 0.46
length gen 3.5 3.7 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
cgi gen 3.5 3.4 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.7 3.5 3.7 7.7 0.47
parse gen 3.8 3.7 3.8 8.0 0.47
fib_recursive gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.7 3.7 7.6 0.50
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.3 28.3 28.4 48.2 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 1 1 6 0.000
gc_stack_roots gen 0 0 1 7 0.000
tuple_return_value gen 0 3 3 9 0.000
classes gen 1 0 0 10 0.091
fib_iter gen 1 1 1 8 0.126
loops gen 2 1 2 12 0.139
modules gen 1 1 1 10 0.140
files gen 1 2 0 8 0.140
parse gen 1 3 2 7 0.141
cgi gen 1 3 4 7 0.143
fib_recursive gen 2 3 1 8 0.222
scoped_resource gen 2 3 4 8 0.256
asdl_generated gen 3 2 3 10 0.299
containers gen 7 9 6 21 0.351
escape gen 6 2 3 11 0.548
length gen 6 4 3 9 0.665
varargs gen 22 17 22 28 0.792
cartesian gen 8 8 9 9 0.881

raw benchmark files