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 1 1 0 235 0.003
fib_recursive gen 5 6 6 1,106 0.005
loops gen 3 3 3 363 0.007
fib_iter gen 7 5 4 947 0.007
asdl_generated gen 8 9 7 522 0.015
parse gen 20 24 24 953 0.021
scoped_resource gen 29 25 27 1,378 0.021
classes gen 1 1 1 32 0.029
gc_stack_roots gen 1 1 1 18 0.039
containers gen 5 7 7 124 0.042
tuple_return_value gen 13 16 14 251 0.054
files gen 6 6 6 102 0.058
length gen 39 33 35 281 0.140
cartesian gen 69 74 68 388 0.177
escape gen 91 98 92 427 0.214
cgi gen 255 248 257 739 0.345
varargs gen 20 11 9 24 0.834
control_flow gen 135 177 135 148 0.914

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.5 11.5 0.39
asdl_generated gen 3.3 3.3 3.4 7.6 0.43
cartesian gen 3.4 3.4 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
fib_iter gen 3.5 3.7 3.7 7.9 0.45
escape gen 3.5 3.4 3.4 7.7 0.46
cgi gen 3.5 3.4 3.5 7.6 0.47
loops gen 3.5 3.8 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
files gen 3.7 3.8 3.8 7.7 0.47
length gen 3.7 3.7 3.5 7.7 0.47
tuple_return_value gen 3.7 3.8 3.8 7.7 0.47
fib_recursive gen 3.7 3.5 3.7 7.6 0.48
modules gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
parse gen 3.9 3.7 3.8 8.0 0.49
containers gen 28.5 28.4 28.4 48.4 0.59
varargs gen 5.4 5.5 5.4 7.5 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 3 0 6 0.000
fib_iter gen 0 2 3 9 0.000
length gen 0 4 4 5 0.000
loops gen 0 0 0 6 0.000
modules gen 1 0 1 6 0.119
scoped_resource gen 1 6 3 8 0.122
fib_recursive gen 1 0 0 8 0.133
files gen 1 1 1 7 0.141
classes gen 2 1 2 12 0.154
gc_stack_roots gen 1 0 0 4 0.174
asdl_generated gen 2 1 3 9 0.223
containers gen 9 7 6 28 0.332
tuple_return_value gen 2 1 1 5 0.383
cartesian gen 6 6 7 12 0.500
cgi gen 5 3 3 9 0.554
escape gen 6 6 6 10 0.603
varargs gen 21 27 30 33 0.637
parse gen 6 3 3 8 0.737

raw benchmark files