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 13 0.000
loops gen 1 1 2 313 0.003
modules gen 1 0 1 211 0.005
fib_recursive gen 5 5 5 998 0.005
fib_iter gen 6 6 5 739 0.009
asdl_generated gen 9 9 8 515 0.017
scoped_resource gen 30 30 27 1,229 0.024
parse gen 24 23 23 897 0.027
containers gen 4 4 6 119 0.033
classes gen 1 0 2 32 0.036
files gen 4 6 6 87 0.046
tuple_return_value gen 13 15 13 217 0.059
length gen 30 30 28 225 0.135
cartesian gen 64 71 66 364 0.177
escape gen 84 96 85 384 0.219
cgi gen 182 178 182 671 0.271
varargs gen 17 14 13 21 0.795
control_flow gen 126 167 124 136 0.925

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.6 4.3 11.6 0.38
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
asdl_generated gen 3.5 3.4 3.4 7.9 0.45
cartesian gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.7 3.7 7.7 0.46
scoped_resource gen 3.5 3.4 3.5 7.7 0.46
parse gen 3.8 3.8 3.9 8.1 0.47
cgi gen 3.7 3.4 3.5 7.7 0.47
fib_iter gen 3.7 3.7 3.5 7.7 0.47
length gen 3.7 3.7 3.7 7.7 0.47
fib_recursive gen 3.7 3.7 3.8 7.6 0.48
modules gen 3.7 3.5 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.8 3.9 7.6 0.50
tuple_return_value gen 3.9 3.8 3.8 7.9 0.50
containers gen 28.5 28.5 28.5 48.4 0.59
varargs gen 5.6 5.5 5.5 7.6 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 1 1 5 0.000
fib_iter gen 0 0 2 5 0.000
fib_recursive gen 0 1 0 3 0.000
modules gen 0 1 0 5 0.000
parse gen 0 3 1 7 0.000
classes gen 1 2 0 7 0.163
asdl_generated gen 1 1 1 4 0.242
scoped_resource gen 1 3 3 4 0.251
loops gen 1 2 0 4 0.268
gc_stack_roots gen 1 1 1 4 0.272
escape gen 2 2 1 7 0.287
files gen 2 0 0 6 0.336
tuple_return_value gen 2 1 2 5 0.391
varargs gen 7 10 12 15 0.458
length gen 2 3 4 4 0.507
cartesian gen 5 4 3 8 0.628
containers gen 9 9 6 13 0.686
cgi gen 4 1 3 4 1.006

raw benchmark files