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 0 0 231 0.000
loops gen 1 1 3 358 0.003
fib_recursive gen 5 6 5 1,087 0.005
fib_iter gen 6 6 6 957 0.006
asdl_generated gen 9 9 9 518 0.017
scoped_resource gen 26 31 29 1,377 0.019
parse gen 21 26 26 952 0.022
classes gen 1 1 3 30 0.029
containers gen 6 6 6 119 0.053
gc_stack_roots gen 1 0 0 13 0.053
tuple_return_value gen 15 16 14 257 0.059
files gen 7 6 6 105 0.064
length gen 37 33 33 248 0.148
cartesian gen 69 76 74 393 0.176
escape gen 95 104 92 440 0.215
cgi gen 258 251 241 785 0.328
varargs gen 13 17 24 34 0.384
control_flow gen 134 175 134 170 0.787

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.5 3.4 7.7 0.44
cartesian gen 3.4 3.4 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
scoped_resource gen 3.5 3.7 3.5 7.9 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
fib_iter gen 3.5 3.4 3.7 7.7 0.46
escape gen 3.5 3.4 3.5 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.7 3.7 7.6 0.47
fib_recursive gen 3.7 3.5 3.5 7.7 0.47
length gen 3.7 3.7 3.5 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.48
control_flow gen 3.7 3.8 3.7 7.6 0.48
files gen 3.7 3.8 3.5 7.6 0.48
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.3 28.7 28.7 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
files gen 0 1 1 7 0.000
tuple_return_value gen 0 1 1 4 0.000
asdl_generated gen 1 1 1 11 0.091
gc_stack_roots gen 1 1 1 7 0.099
fib_iter gen 1 1 1 9 0.112
fib_recursive gen 1 0 1 9 0.115
modules gen 1 1 1 10 0.140
classes gen 2 1 0 12 0.149
loops gen 1 2 0 8 0.155
containers gen 7 8 8 32 0.229
control_flow gen 2 4 1 6 0.333
parse gen 4 1 0 12 0.339
escape gen 4 1 6 8 0.505
cgi gen 3 2 4 5 0.599
cartesian gen 6 4 1 9 0.667
scoped_resource gen 4 1 1 5 0.776
length gen 2 4 6 2 1.018
varargs gen 25 21 15 22 1.143

raw benchmark files