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 0 1 12 0.000
modules gen 0 0 1 237 0.000
fib_recursive gen 4 6 4 1,129 0.003
loops gen 1 2 1 346 0.004
fib_iter gen 7 7 6 966 0.007
asdl_generated gen 8 7 7 514 0.015
scoped_resource gen 25 30 30 1,339 0.018
parse gen 20 25 25 945 0.021
classes gen 1 1 3 30 0.031
files gen 5 6 5 100 0.050
tuple_return_value gen 13 16 11 246 0.053
containers gen 7 3 6 125 0.055
length gen 37 34 34 244 0.151
cartesian gen 67 69 65 395 0.171
escape gen 98 101 90 430 0.227
cgi gen 255 250 259 736 0.346
varargs gen 19 22 15 29 0.655
control_flow gen 135 183 135 151 0.893

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.5 11.5 0.39
cartesian gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.5 3.4 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
loops gen 3.4 3.7 3.5 7.6 0.45
parse gen 3.7 3.9 3.7 8.1 0.45
cgi gen 3.5 3.5 3.4 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.7 7.6 0.47
fib_recursive gen 3.5 3.5 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.5 7.7 0.47
tuple_return_value gen 3.7 3.8 3.8 7.7 0.47
files gen 3.7 3.7 3.7 7.6 0.48
length gen 3.7 3.7 3.5 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.7 0.49
containers gen 28.4 28.5 28.5 48.2 0.59
varargs gen 5.5 5.4 5.5 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 0 1 7 0.000
loops gen 1 1 2 11 0.118
escape gen 1 6 8 8 0.126
classes gen 2 2 0 13 0.142
gc_stack_roots gen 1 1 1 9 0.151
length gen 2 3 4 10 0.199
tuple_return_value gen 2 1 4 9 0.222
asdl_generated gen 2 3 3 8 0.248
containers gen 7 12 8 26 0.263
modules gen 1 1 0 5 0.282
files gen 2 1 2 7 0.284
fib_recursive gen 3 0 2 8 0.332
scoped_resource gen 5 2 0 10 0.495
control_flow gen 2 0 1 4 0.499
parse gen 6 2 1 9 0.651
varargs gen 19 17 23 27 0.703
cgi gen 6 2 2 8 0.749
cartesian gen 8 12 11 7 1.132

raw benchmark files