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 0 11 0.000
fib_recursive gen 6 6 5 1,100 0.006
modules gen 1 1 0 238 0.006
fib_iter gen 6 6 7 980 0.007
loops gen 3 3 2 365 0.007
asdl_generated gen 9 9 9 508 0.018
scoped_resource gen 28 30 27 1,414 0.020
containers gen 3 4 5 126 0.023
parse gen 24 23 23 961 0.025
classes gen 1 2 2 32 0.028
files gen 5 6 4 99 0.049
tuple_return_value gen 13 16 11 254 0.051
length gen 37 34 35 249 0.147
cartesian gen 71 75 66 431 0.164
escape gen 90 102 89 430 0.209
cgi gen 257 251 257 742 0.346
varargs gen 20 15 16 32 0.636
control_flow gen 135 175 134 147 0.917

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.6 0.37
asdl_generated gen 3.3 3.4 3.4 7.7 0.42
cgi gen 3.4 3.4 3.7 7.6 0.45
gc_stack_roots gen 3.4 3.5 3.4 7.6 0.45
cartesian gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.7 3.7 7.7 0.46
modules gen 3.5 3.5 3.7 7.7 0.46
escape gen 3.5 3.5 3.4 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.4 7.6 0.47
parse gen 3.8 3.9 3.9 8.1 0.47
fib_iter gen 3.7 3.5 3.4 7.6 0.48
files gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
control_flow gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.5 28.5 48.4 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_recursive gen 0 0 1 6 0.000
loops gen 0 0 1 5 0.000
modules gen 0 0 1 6 0.000
fib_iter gen 1 1 0 9 0.102
asdl_generated gen 1 1 1 9 0.110
parse gen 1 4 3 9 0.112
gc_stack_roots gen 1 1 1 10 0.137
control_flow gen 1 4 2 7 0.142
classes gen 2 1 1 10 0.176
files gen 2 1 3 9 0.214
tuple_return_value gen 2 1 4 8 0.250
scoped_resource gen 2 2 3 8 0.252
containers gen 11 10 9 25 0.424
cartesian gen 4 5 9 9 0.443
cgi gen 3 3 3 6 0.500
length gen 2 3 4 4 0.507
varargs gen 18 24 23 26 0.705
escape gen 8 3 8 9 0.888

raw benchmark files