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 0 235 0.000
loops gen 2 3 3 360 0.005
fib_recursive gen 7 7 6 1,094 0.006
fib_iter gen 8 7 7 967 0.008
asdl_generated gen 9 10 9 514 0.018
scoped_resource gen 32 31 25 1,350 0.024
parse gen 23 25 26 961 0.024
containers gen 4 6 5 127 0.033
classes gen 2 2 1 29 0.054
gc_stack_roots gen 1 1 1 15 0.055
tuple_return_value gen 16 17 12 251 0.064
files gen 8 6 6 98 0.082
length gen 36 33 40 245 0.148
cartesian gen 71 74 70 392 0.181
escape gen 96 106 98 440 0.219
cgi gen 264 255 256 742 0.356
varargs gen 20 20 26 28 0.721
control_flow gen 138 180 135 150 0.923

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
asdl_generated gen 3.3 3.5 3.4 7.6 0.43
gc_stack_roots gen 3.4 3.3 3.3 7.7 0.44
parse gen 3.7 3.5 3.8 8.0 0.46
cartesian gen 3.5 3.4 3.5 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.4 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.7 3.5 3.5 7.7 0.47
loops gen 3.7 3.5 3.5 7.7 0.47
cgi gen 3.7 3.5 3.5 7.6 0.48
files gen 3.7 3.8 3.8 7.6 0.48
length gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.5 28.5 28.6 48.2 0.59
varargs gen 5.5 5.4 5.4 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
cgi gen 0 0 6 9 0.000
control_flow gen 0 1 2 6 0.000
fib_recursive gen 0 0 1 8 0.000
files gen 0 2 2 10 0.000
tuple_return_value gen 0 1 5 10 0.000
classes gen 2 1 2 15 0.104
fib_iter gen 1 2 1 9 0.110
loops gen 1 1 0 8 0.116
gc_stack_roots gen 1 1 0 7 0.117
scoped_resource gen 1 2 6 8 0.128
modules gen 1 1 2 9 0.160
asdl_generated gen 2 1 2 10 0.203
parse gen 3 3 0 10 0.302
containers gen 10 10 11 33 0.316
escape gen 4 4 4 9 0.445
varargs gen 20 20 15 31 0.652
cartesian gen 6 9 7 8 0.751
length gen 4 6 0 4 1.009

raw benchmark files