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 1 1 0 237 0.003
fib_recursive gen 6 5 5 1,120 0.006
loops gen 3 1 3 356 0.007
fib_iter gen 7 6 6 963 0.007
asdl_generated gen 8 8 10 511 0.016
scoped_resource gen 26 30 27 1,351 0.019
parse gen 22 79 22 958 0.023
containers gen 4 5 6 130 0.031
classes gen 1 1 1 35 0.039
tuple_return_value gen 13 14 13 245 0.052
files gen 6 6 6 101 0.058
gc_stack_roots gen 1 0 1 14 0.096
length gen 34 29 33 242 0.140
cartesian gen 67 76 71 403 0.167
escape gen 93 98 89 426 0.219
cgi gen 269 250 258 725 0.371
varargs gen 14 16 17 24 0.581
control_flow gen 134 178 136 149 0.903

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.3 3.4 3.5 7.6 0.43
gc_stack_roots gen 3.3 3.4 3.4 7.6 0.43
cgi gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.5 3.7 7.7 0.46
modules gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
files gen 3.5 3.8 3.7 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
parse gen 3.8 3.9 3.8 8.1 0.47
fib_recursive gen 3.7 3.7 3.5 7.7 0.47
fib_iter gen 3.7 3.5 3.7 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.7 3.7 7.7 0.49
containers gen 28.4 28.5 28.5 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
fib_iter gen 0 1 1 9 0.000
fib_recursive gen 0 1 1 5 0.000
gc_stack_roots gen 0 1 0 7 0.000
loops gen 0 3 0 8 0.000
modules gen 1 0 1 7 0.104
files gen 1 1 1 8 0.122
control_flow gen 1 1 0 7 0.142
classes gen 1 1 2 9 0.153
tuple_return_value gen 2 2 2 7 0.281
cgi gen 3 3 2 10 0.300
parse gen 3 1 3 9 0.326
asdl_generated gen 2 2 0 6 0.334
length gen 4 7 5 10 0.400
containers gen 10 10 9 22 0.458
escape gen 5 6 10 7 0.710
varargs gen 25 23 22 33 0.755
cartesian gen 6 4 5 7 0.861
scoped_resource gen 4 2 3 4 0.995

raw benchmark files