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 0 1 14 0.000
modules gen 0 1 1 238 0.000
fib_recursive gen 4 5 6 1,101 0.004
loops gen 2 2 2 376 0.004
fib_iter gen 4 5 7 992 0.004
asdl_generated gen 7 9 10 523 0.013
parse gen 21 27 24 972 0.021
scoped_resource gen 28 31 30 1,310 0.021
containers gen 5 3 6 129 0.040
files gen 4 5 6 97 0.046
tuple_return_value gen 13 12 13 256 0.050
classes gen 3 1 2 37 0.072
length gen 35 33 34 239 0.146
cartesian gen 64 73 67 392 0.163
escape gen 94 102 95 438 0.215
cgi gen 256 261 258 727 0.353
varargs gen 18 18 14 28 0.637
control_flow gen 135 177 135 149 0.906

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.2 11.5 0.39
asdl_generated gen 3.4 3.3 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.3 7.7 0.44
cartesian gen 3.4 3.5 3.5 7.6 0.45
modules gen 3.4 3.5 3.5 7.6 0.45
loops gen 3.5 3.8 3.5 7.7 0.46
parse gen 3.7 3.9 3.8 8.0 0.46
cgi gen 3.5 3.7 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
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
files gen 3.7 3.8 3.8 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.3 28.5 28.5 48.2 0.59
varargs gen 5.4 5.6 5.5 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 2 1 6 0.000
control_flow gen 0 2 0 4 0.000
fib_recursive gen 2 2 0 10 0.179
gc_stack_roots gen 1 1 0 7 0.196
modules gen 1 1 1 7 0.199
scoped_resource gen 2 1 4 9 0.221
loops gen 1 1 0 3 0.276
files gen 3 2 2 9 0.291
containers gen 8 11 7 27 0.306
tuple_return_value gen 2 4 2 6 0.327
asdl_generated gen 3 1 0 9 0.334
length gen 3 4 3 8 0.375
cgi gen 4 1 2 10 0.399
parse gen 5 0 2 10 0.491
escape gen 4 3 3 8 0.501
varargs gen 21 21 25 29 0.718
fib_iter gen 3 2 0 3 0.890
cartesian gen 11 7 8 7 1.570

raw benchmark files