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 1 1 237 0.000
loops gen 2 2 1 362 0.005
fib_recursive gen 6 6 6 1,089 0.006
fib_iter gen 6 7 6 963 0.006
asdl_generated gen 9 8 9 512 0.018
scoped_resource gen 28 28 26 1,371 0.020
containers gen 3 6 4 125 0.023
parse gen 24 26 22 952 0.026
files gen 5 5 5 102 0.047
tuple_return_value gen 13 14 11 253 0.050
classes gen 2 1 1 28 0.064
gc_stack_roots gen 1 0 1 11 0.132
length gen 36 31 38 241 0.149
cartesian gen 69 75 68 392 0.176
escape gen 94 100 94 438 0.214
cgi gen 257 247 252 728 0.353
varargs gen 19 13 19 23 0.817
control_flow gen 133 178 136 148 0.899

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.5 0.38
asdl_generated gen 3.3 3.4 3.3 7.7 0.42
cartesian gen 3.4 3.4 3.5 7.7 0.44
cgi gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.5 3.4 3.7 7.7 0.46
length gen 3.5 3.7 3.7 7.7 0.46
loops gen 3.5 3.7 3.7 7.7 0.46
fib_iter gen 3.5 3.7 3.5 7.6 0.47
parse gen 3.8 3.8 3.7 8.0 0.47
fib_recursive gen 3.7 3.5 3.7 7.6 0.48
modules gen 3.7 3.7 3.5 7.6 0.48
scoped_resource gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.7 28.5 48.2 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 0 8 0.000
gc_stack_roots gen 0 1 1 10 0.000
classes gen 1 2 2 16 0.056
asdl_generated gen 1 2 1 11 0.090
loops gen 1 1 2 6 0.141
fib_iter gen 1 0 1 6 0.168
parse gen 1 1 4 6 0.170
control_flow gen 2 2 3 10 0.200
modules gen 1 0 0 7 0.203
scoped_resource gen 3 5 5 11 0.268
tuple_return_value gen 2 3 4 7 0.278
length gen 3 6 1 10 0.300
escape gen 3 6 3 10 0.302
files gen 2 2 2 6 0.318
cgi gen 3 4 1 8 0.374
containers gen 11 8 10 27 0.395
varargs gen 19 25 19 33 0.570
cartesian gen 6 5 7 10 0.599

raw benchmark files