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 13 0.000
modules gen 0 1 0 234 0.000
fib_recursive gen 5 6 6 1,104 0.005
loops gen 2 3 1 353 0.005
fib_iter gen 7 6 7 955 0.007
asdl_generated gen 8 9 8 517 0.015
scoped_resource gen 28 28 26 1,355 0.020
parse gen 23 21 24 954 0.025
containers gen 4 6 4 116 0.034
classes gen 2 3 3 35 0.050
tuple_return_value gen 13 15 13 252 0.052
files gen 7 6 5 96 0.069
cartesian gen 63 71 68 414 0.152
length gen 37 33 31 240 0.154
escape gen 91 97 95 424 0.216
varargs gen 9 16 24 26 0.344
cgi gen 258 248 258 722 0.357
control_flow gen 135 179 134 145 0.929

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 1 0 7 0.000
files gen 0 1 2 9 0.000
loops gen 1 0 2 9 0.095
fib_recursive gen 1 0 0 10 0.104
classes gen 1 0 0 8 0.109
modules gen 1 0 1 9 0.153
length gen 2 3 7 12 0.166
gc_stack_roots gen 1 1 1 8 0.176
parse gen 2 6 2 8 0.254
tuple_return_value gen 2 1 2 7 0.287
containers gen 10 8 10 34 0.288
control_flow gen 2 2 1 6 0.333
cgi gen 3 5 4 9 0.333
scoped_resource gen 2 4 4 5 0.397
asdl_generated gen 2 1 2 5 0.399
escape gen 8 7 3 10 0.804
varargs gen 30 23 14 30 0.994
cartesian gen 12 9 7 8 1.498

raw benchmark files