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 238 0.000
fib_recursive gen 4 5 6 1,095 0.004
loops gen 2 2 2 396 0.004
fib_iter gen 7 7 7 966 0.007
asdl_generated gen 8 8 7 511 0.016
scoped_resource gen 29 28 25 1,402 0.021
parse gen 23 23 23 961 0.024
tuple_return_value gen 14 13 15 244 0.058
files gen 6 5 6 98 0.061
containers gen 8 8 4 124 0.067
classes gen 3 3 2 33 0.080
gc_stack_roots gen 1 0 1 17 0.081
length gen 36 33 38 240 0.149
cartesian gen 67 71 64 392 0.170
escape gen 89 100 91 438 0.203
cgi gen 259 252 260 723 0.357
varargs gen 20 13 14 27 0.742
control_flow gen 135 179 136 143 0.945

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.5 4.5 11.5 0.38
asdl_generated gen 3.3 3.3 3.5 7.7 0.42
gc_stack_roots gen 3.3 3.4 3.4 7.7 0.42
cartesian gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.5 3.7 7.7 0.46
modules gen 3.5 3.5 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.4 3.5 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.7 3.7 3.7 7.7 0.47
length gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.8 3.8 3.9 8.0 0.48
files gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
tuple_return_value gen 3.8 3.5 3.5 7.6 0.50
containers gen 28.4 28.7 28.3 48.2 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 0 1 10 0.000
fib_iter gen 0 0 0 11 0.000
gc_stack_roots gen 0 1 0 4 0.000
loops gen 1 1 0 11 0.078
tuple_return_value gen 1 4 0 10 0.101
files gen 1 2 1 8 0.125
cgi gen 1 1 1 8 0.125
scoped_resource gen 1 3 5 7 0.145
containers gen 5 6 9 27 0.193
fib_recursive gen 2 1 0 9 0.198
parse gen 2 4 3 10 0.203
modules gen 1 0 0 6 0.232
control_flow gen 2 1 1 8 0.250
asdl_generated gen 2 2 3 8 0.251
length gen 3 4 1 8 0.373
varargs gen 19 26 25 30 0.634
cartesian gen 9 11 11 8 1.120
escape gen 9 5 6 3 2.995

raw benchmark files