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 1 236 0.000
fib_recursive gen 6 5 7 1,103 0.006
loops gen 3 3 3 366 0.007
fib_iter gen 7 6 7 958 0.007
asdl_generated gen 6 6 6 501 0.012
scoped_resource gen 26 27 30 1,384 0.019
parse gen 23 25 24 944 0.025
containers gen 5 4 6 135 0.036
files gen 5 6 6 98 0.049
tuple_return_value gen 15 16 14 251 0.058
classes gen 3 2 1 32 0.083
gc_stack_roots gen 1 0 0 14 0.095
length gen 35 34 35 251 0.138
cartesian gen 73 78 71 386 0.188
escape gen 94 98 93 439 0.213
cgi gen 260 244 258 730 0.356
varargs gen 16 14 14 24 0.678
control_flow gen 134 179 137 149 0.901

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.2 11.5 0.38
asdl_generated gen 3.4 3.3 3.4 7.7 0.44
cartesian gen 3.4 3.5 3.4 7.6 0.45
escape gen 3.4 3.5 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
cgi gen 3.5 3.4 3.4 7.7 0.46
modules gen 3.5 3.7 3.5 7.7 0.46
fib_iter gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
loops gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
control_flow gen 3.7 3.8 3.8 7.6 0.48
length gen 3.7 3.7 3.5 7.6 0.48
files gen 3.8 3.8 3.7 7.7 0.49
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.7 28.5 28.5 48.1 0.60
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
classes gen 0 1 1 10 0.000
fib_iter gen 0 1 0 8 0.000
fib_recursive gen 0 2 0 6 0.000
gc_stack_roots gen 0 1 1 6 0.000
loops gen 0 0 0 5 0.000
tuple_return_value gen 1 0 1 7 0.149
cgi gen 1 8 2 5 0.200
cartesian gen 2 2 4 10 0.202
parse gen 2 2 2 9 0.226
files gen 2 1 1 8 0.242
modules gen 1 1 1 5 0.277
scoped_resource gen 4 6 1 13 0.305
asdl_generated gen 4 4 4 10 0.397
control_flow gen 2 0 1 4 0.497
containers gen 9 10 8 17 0.514
escape gen 5 7 5 9 0.555
length gen 4 2 4 6 0.660
varargs gen 22 24 24 33 0.678

raw benchmark files