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
gc_stack_roots gen 0 1 1 11 0.000
modules gen 0 0 1 241 0.000
fib_recursive gen 4 6 6 1,097 0.004
loops gen 2 2 2 357 0.005
fib_iter gen 5 5 6 950 0.006
asdl_generated gen 7 6 9 527 0.013
scoped_resource gen 29 31 25 1,358 0.021
parse gen 21 26 24 960 0.022
classes gen 1 0 1 39 0.034
tuple_return_value gen 13 15 14 243 0.054
containers gen 7 3 6 130 0.054
files gen 6 4 6 101 0.057
length gen 33 31 33 244 0.136
cartesian gen 67 73 70 390 0.172
escape gen 88 98 94 436 0.201
cgi gen 263 250 254 735 0.358
varargs gen 20 18 15 27 0.745
control_flow gen 135 177 134 142 0.949

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.4 3.4 7.6 0.43
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
fib_iter gen 3.5 3.7 3.5 7.7 0.46
loops gen 3.5 3.7 3.4 7.7 0.46
modules gen 3.5 3.5 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.7 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
cartesian gen 3.5 3.4 3.5 7.6 0.47
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
length gen 3.5 3.7 3.7 7.6 0.47
files gen 3.7 3.7 3.7 7.7 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
fib_recursive gen 3.7 3.5 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.3 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
control_flow gen 1 2 2 11 0.091
loops gen 1 1 1 9 0.095
gc_stack_roots gen 1 0 1 10 0.140
cgi gen 1 2 6 7 0.143
scoped_resource gen 2 1 5 11 0.179
files gen 1 3 1 5 0.194
tuple_return_value gen 2 2 1 10 0.200
fib_recursive gen 2 0 0 7 0.255
containers gen 7 12 8 25 0.280
classes gen 1 3 2 4 0.335
fib_iter gen 2 3 1 5 0.354
modules gen 1 1 0 4 0.363
parse gen 4 1 2 10 0.407
asdl_generated gen 3 4 1 6 0.501
varargs gen 18 20 23 29 0.624
cartesian gen 8 8 5 11 0.730
length gen 5 6 6 6 0.840
escape gen 11 5 3 7 1.566

raw benchmark files