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 0 0 231 0.000
fib_recursive gen 5 6 5 1,109 0.005
loops gen 2 4 2 358 0.005
fib_iter gen 6 6 7 949 0.006
asdl_generated gen 9 8 9 522 0.016
scoped_resource gen 25 28 28 1,415 0.018
parse gen 21 25 21 960 0.022
classes gen 1 3 2 34 0.039
tuple_return_value gen 12 15 13 253 0.048
containers gen 7 8 5 127 0.055
files gen 6 6 6 99 0.059
gc_stack_roots gen 1 1 1 10 0.136
length gen 33 34 37 243 0.137
cartesian gen 71 74 68 399 0.177
escape gen 93 101 93 435 0.214
cgi gen 260 247 250 731 0.355
varargs gen 12 14 17 18 0.674
control_flow gen 136 177 133 142 0.954

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.3 4.3 11.4 0.38
escape gen 3.4 3.4 3.4 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
parse gen 3.7 3.8 3.8 8.1 0.45
cartesian gen 3.5 3.5 3.5 7.7 0.46
fib_iter gen 3.5 3.7 3.5 7.7 0.46
cgi gen 3.5 3.5 3.4 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.7 3.7 3.5 7.7 0.47
files gen 3.7 3.8 3.7 7.7 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
modules gen 3.7 3.7 3.4 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.5 28.7 28.5 48.2 0.59
varargs gen 5.4 5.5 5.5 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 2 3 9 0.000
gc_stack_roots gen 0 1 0 10 0.000
fib_iter gen 1 1 0 11 0.091
loops gen 1 0 1 7 0.121
classes gen 1 0 1 9 0.149
modules gen 1 1 1 9 0.159
files gen 1 1 1 6 0.163
fib_recursive gen 1 0 1 6 0.172
asdl_generated gen 2 2 1 9 0.212
containers gen 7 7 9 23 0.301
parse gen 4 2 5 8 0.489
cartesian gen 5 7 5 9 0.561
cgi gen 4 4 1 7 0.571
length gen 5 3 2 8 0.630
varargs gen 26 24 21 39 0.674
scoped_resource gen 7 4 2 10 0.683
tuple_return_value gen 3 2 2 4 0.764
escape gen 5 3 5 6 0.835

raw benchmark files