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
loops gen 1 3 2 349 0.003
modules gen 1 1 1 240 0.003
fib_recursive gen 5 5 6 1,087 0.004
fib_iter gen 7 5 7 962 0.008
asdl_generated gen 8 8 9 500 0.015
scoped_resource gen 28 28 29 1,464 0.019
parse gen 22 24 20 981 0.022
containers gen 5 6 6 133 0.037
gc_stack_roots gen 1 0 0 13 0.053
files gen 6 6 7 100 0.060
tuple_return_value gen 15 14 15 246 0.062
classes gen 3 2 1 31 0.092
length gen 32 37 37 239 0.136
cartesian gen 72 80 73 436 0.164
escape gen 96 104 99 431 0.222
cgi gen 260 244 262 736 0.353
varargs gen 17 24 11 26 0.646
control_flow gen 136 181 134 146 0.931

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
cgi gen 3.4 3.5 3.5 7.7 0.44
escape gen 3.4 3.4 3.5 7.7 0.44
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
scoped_resource gen 3.5 3.5 3.7 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.7 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.7 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
loops gen 3.7 3.5 3.7 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.47
files gen 3.7 3.7 3.8 7.6 0.48
tuple_return_value gen 3.7 3.8 3.5 7.6 0.48
containers gen 28.3 28.3 28.5 48.2 0.59
varargs gen 5.4 5.5 5.5 7.7 0.69

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 2 12 0.000
fib_iter gen 0 2 0 8 0.000
tuple_return_value gen 0 3 1 7 0.000
modules gen 1 0 0 10 0.075
gc_stack_roots gen 1 1 1 7 0.098
files gen 1 1 0 6 0.165
control_flow gen 1 1 2 5 0.200
fib_recursive gen 2 1 0 8 0.227
scoped_resource gen 2 4 2 8 0.258
loops gen 2 1 1 7 0.275
asdl_generated gen 3 3 1 10 0.290
cgi gen 2 4 1 5 0.399
containers gen 9 8 8 22 0.405
parse gen 4 3 6 7 0.560
escape gen 3 1 2 5 0.599
cartesian gen 4 3 2 6 0.672
varargs gen 22 15 28 30 0.724
length gen 6 1 2 7 0.870

raw benchmark files