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 236 0.000
loops gen 1 3 1 362 0.002
fib_recursive gen 5 6 5 1,090 0.005
fib_iter gen 6 6 6 957 0.007
scoped_resource gen 25 26 25 1,360 0.018
asdl_generated gen 10 9 7 509 0.019
parse gen 25 25 25 940 0.026
classes gen 1 3 3 30 0.032
containers gen 6 6 6 121 0.048
tuple_return_value gen 15 15 13 245 0.062
files gen 7 6 5 101 0.072
gc_stack_roots gen 1 1 0 17 0.079
length gen 35 33 34 243 0.144
cartesian gen 71 77 65 392 0.181
escape gen 94 102 96 434 0.216
cgi gen 260 249 260 724 0.360
varargs gen 17 20 21 33 0.519
control_flow gen 136 179 134 145 0.934

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.4 3.3 7.7 0.42
cartesian gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.4 7.7 0.44
modules gen 3.4 3.5 3.5 7.6 0.45
loops gen 3.5 3.5 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.7 3.7 3.7 8.0 0.46
cgi gen 3.5 3.7 3.5 7.6 0.47
escape gen 3.5 3.7 3.5 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.7 3.5 3.7 7.7 0.47
control_flow gen 3.7 3.8 3.8 7.6 0.48
fib_iter gen 3.7 3.7 3.5 7.6 0.48
files gen 3.8 3.7 3.8 7.6 0.50
tuple_return_value gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.4 28.3 48.2 0.59
varargs gen 5.5 5.5 5.4 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
files gen 0 1 3 6 0.000
gc_stack_roots gen 0 0 1 3 0.000
tuple_return_value gen 0 2 2 6 0.000
asdl_generated gen 1 2 3 9 0.106
parse gen 1 2 2 9 0.110
control_flow gen 1 1 1 9 0.111
fib_iter gen 1 2 2 9 0.118
fib_recursive gen 1 0 1 7 0.128
classes gen 2 0 0 12 0.158
modules gen 1 1 0 7 0.200
containers gen 8 8 8 32 0.244
cgi gen 2 3 2 7 0.286
loops gen 2 1 2 5 0.353
length gen 4 4 5 9 0.446
cartesian gen 4 4 10 8 0.501
varargs gen 21 19 17 26 0.814
escape gen 5 4 4 6 0.832
scoped_resource gen 6 5 5 7 0.858

raw benchmark files