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 15 0.000
loops gen 1 3 2 356 0.003
fib_recursive gen 5 5 6 1,091 0.005
modules gen 1 0 0 232 0.006
fib_iter gen 6 7 6 960 0.006
asdl_generated gen 8 9 9 513 0.016
scoped_resource gen 29 31 27 1,373 0.021
parse gen 24 24 26 935 0.026
classes gen 1 2 1 32 0.028
tuple_return_value gen 11 16 12 249 0.044
files gen 6 7 5 100 0.058
containers gen 8 4 5 123 0.066
length gen 34 36 33 249 0.136
cartesian gen 68 74 72 391 0.173
escape gen 92 100 95 438 0.211
cgi gen 257 251 258 740 0.347
varargs gen 15 14 14 29 0.529
control_flow gen 134 178 136 146 0.920

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 2 0 7 0.000
modules gen 0 1 1 8 0.000
fib_iter gen 1 0 1 8 0.125
loops gen 1 0 0 9 0.138
classes gen 2 1 2 12 0.149
parse gen 2 3 0 13 0.154
files gen 1 0 2 6 0.160
scoped_resource gen 2 1 4 11 0.181
containers gen 6 10 9 29 0.209
gc_stack_roots gen 1 1 0 6 0.224
asdl_generated gen 2 1 1 8 0.249
cgi gen 3 4 2 10 0.300
fib_recursive gen 1 1 0 3 0.305
length gen 5 0 6 10 0.497
tuple_return_value gen 4 1 3 7 0.576
escape gen 5 5 4 8 0.621
varargs gen 23 25 25 28 0.841
cartesian gen 7 4 3 8 0.885

raw benchmark files