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 1 1 12 0.000
modules gen 0 1 1 235 0.000
loops gen 1 3 1 365 0.002
fib_recursive gen 5 6 6 1,124 0.004
fib_iter gen 7 5 6 957 0.008
asdl_generated gen 9 9 9 515 0.017
scoped_resource gen 27 30 27 1,369 0.020
classes gen 1 1 2 37 0.025
parse gen 25 24 24 958 0.026
containers gen 5 8 5 123 0.041
files gen 5 5 6 99 0.049
tuple_return_value gen 13 16 14 245 0.053
length gen 37 33 37 239 0.154
cartesian gen 67 78 72 390 0.171
escape gen 96 98 95 428 0.225
cgi gen 258 250 260 731 0.353
varargs gen 19 17 15 27 0.707
control_flow gen 132 185 135 148 0.887

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
cartesian gen 3.4 3.5 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.4 7.7 0.44
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.7 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.7 3.7 7.6 0.47
files gen 3.7 3.8 3.8 7.7 0.47
parse gen 3.8 3.8 3.9 8.0 0.47
control_flow gen 3.7 3.8 3.8 7.6 0.48
loops gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.4 28.5 28.5 48.2 0.59
varargs gen 5.5 5.5 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 2 1 11 0.000
parse gen 1 3 2 12 0.085
asdl_generated gen 1 1 1 8 0.124
cgi gen 1 2 0 8 0.125
gc_stack_roots gen 1 1 1 8 0.170
length gen 2 3 2 10 0.198
tuple_return_value gen 2 1 1 10 0.200
loops gen 2 0 2 9 0.200
fib_recursive gen 2 0 0 9 0.202
files gen 2 2 1 8 0.243
containers gen 9 6 9 32 0.282
classes gen 2 1 1 6 0.307
modules gen 1 0 0 4 0.358
escape gen 2 7 2 5 0.400
scoped_resource gen 3 1 3 7 0.432
varargs gen 19 21 23 29 0.658
control_flow gen 3 2 1 4 0.751
cartesian gen 8 4 3 9 0.889

raw benchmark files