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 2 235 0.000
fib_recursive gen 5 6 6 1,103 0.005
loops gen 2 3 1 362 0.005
fib_iter gen 6 6 7 969 0.006
asdl_generated gen 9 8 5 529 0.017
scoped_resource gen 26 27 25 1,372 0.019
parse gen 23 24 23 946 0.024
classes gen 1 1 3 35 0.026
tuple_return_value gen 13 16 13 248 0.053
containers gen 7 6 7 130 0.054
files gen 7 6 6 98 0.072
gc_stack_roots gen 1 0 0 13 0.109
length gen 37 29 34 243 0.151
cartesian gen 68 71 74 393 0.173
escape gen 98 101 92 433 0.227
cgi gen 258 238 257 736 0.351
varargs gen 17 22 14 33 0.514
control_flow gen 133 177 134 148 0.897

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.5 4.3 11.5 0.39
cgi gen 3.4 3.4 3.4 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.5 7.9 0.45
escape gen 3.5 3.4 3.4 7.7 0.46
fib_iter gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.7 3.5 7.7 0.46
loops gen 3.5 3.7 3.7 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
files gen 3.7 3.8 3.7 7.7 0.47
length gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.7 3.8 3.7 7.6 0.48
parse gen 3.9 3.7 3.7 8.0 0.49
containers gen 28.5 28.4 28.5 48.2 0.59
varargs gen 5.5 5.5 5.4 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 10 0.000
gc_stack_roots gen 0 1 1 8 0.000
escape gen 1 4 6 9 0.111
fib_recursive gen 1 0 0 9 0.116
loops gen 1 0 1 7 0.123
fib_iter gen 1 1 0 8 0.127
asdl_generated gen 1 3 5 5 0.199
classes gen 2 2 0 9 0.204
cgi gen 2 2 4 9 0.222
length gen 2 7 4 9 0.227
containers gen 7 9 7 29 0.241
modules gen 1 1 0 6 0.249
control_flow gen 2 2 2 8 0.250
tuple_return_value gen 2 1 2 6 0.334
parse gen 3 3 3 6 0.491
scoped_resource gen 5 4 5 8 0.618
varargs gen 22 17 24 24 0.914
cartesian gen 7 9 6 7 1.002

raw benchmark files