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 1 231 0.000
loops gen 2 3 3 374 0.005
fib_recursive gen 6 4 5 1,094 0.006
fib_iter gen 6 7 5 963 0.006
asdl_generated gen 10 7 8 522 0.019
scoped_resource gen 28 27 26 1,398 0.020
parse gen 22 26 25 946 0.023
containers gen 5 5 7 127 0.039
classes gen 2 1 2 37 0.048
tuple_return_value gen 13 13 15 244 0.053
files gen 6 6 5 98 0.058
gc_stack_roots gen 1 1 0 12 0.116
length gen 35 31 35 237 0.146
cartesian gen 69 69 66 391 0.176
escape gen 96 99 94 434 0.221
cgi gen 255 248 258 729 0.350
varargs gen 15 24 16 25 0.603
control_flow gen 135 178 133 143 0.944

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.3 11.5 0.39
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
cartesian gen 3.4 3.5 3.4 7.7 0.44
escape gen 3.4 3.5 3.5 7.6 0.45
fib_iter gen 3.4 3.7 3.7 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
parse gen 3.7 3.8 3.8 8.1 0.45
cgi gen 3.5 3.7 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.7 3.5 3.5 7.9 0.47
files gen 3.7 3.7 3.7 7.7 0.47
loops gen 3.7 3.7 3.5 7.7 0.47
control_flow gen 3.7 3.8 3.7 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
modules gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
containers gen 28.6 28.5 28.3 48.2 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 3 2 5 0.000
fib_recursive gen 0 2 1 8 0.000
gc_stack_roots gen 0 0 1 9 0.000
files gen 1 1 2 10 0.094
control_flow gen 1 2 3 10 0.099
fib_iter gen 1 0 2 9 0.111
loops gen 1 0 0 7 0.123
classes gen 1 1 1 6 0.149
modules gen 1 1 1 9 0.152
tuple_return_value gen 2 3 0 9 0.222
scoped_resource gen 2 4 4 6 0.337
length gen 4 5 3 11 0.359
containers gen 9 9 6 23 0.384
cgi gen 5 4 3 9 0.556
parse gen 4 1 1 6 0.653
escape gen 4 6 5 6 0.666
varargs gen 24 15 22 32 0.754
cartesian gen 6 11 9 5 1.196

raw benchmark files