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 1 238 0.000
fib_recursive gen 6 6 5 1,101 0.005
fib_iter gen 6 7 6 958 0.007
loops gen 3 2 1 363 0.007
asdl_generated gen 8 11 9 521 0.015
scoped_resource gen 29 31 26 1,429 0.021
parse gen 22 26 25 974 0.022
containers gen 5 4 4 134 0.037
gc_stack_roots gen 1 1 1 15 0.052
classes gen 2 1 2 35 0.060
tuple_return_value gen 15 16 13 247 0.061
files gen 7 6 5 100 0.075
length gen 37 36 35 245 0.152
cartesian gen 71 71 73 386 0.183
escape gen 97 104 99 432 0.225
cgi gen 254 252 258 732 0.347
varargs gen 21 13 15 29 0.727
control_flow gen 135 178 136 158 0.856

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
loops gen 0 1 1 3 0.000
classes gen 1 1 1 10 0.104
gc_stack_roots gen 1 1 1 7 0.104
fib_recursive gen 1 0 1 9 0.111
fib_iter gen 1 0 1 9 0.117
files gen 1 1 3 9 0.118
tuple_return_value gen 1 3 4 7 0.143
scoped_resource gen 1 2 5 6 0.169
modules gen 1 1 1 8 0.186
length gen 2 1 5 8 0.252
asdl_generated gen 2 1 1 7 0.286
control_flow gen 2 2 0 6 0.332
cartesian gen 3 11 3 9 0.336
containers gen 9 10 10 23 0.392
cgi gen 4 3 6 10 0.399
escape gen 4 4 2 7 0.573
varargs gen 19 27 24 28 0.681
parse gen 4 3 2 5 0.796

raw benchmark files