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 239 0.000
fib_recursive gen 6 5 5 1,080 0.006
loops gen 3 3 2 357 0.007
fib_iter gen 7 6 6 952 0.007
asdl_generated gen 8 8 7 526 0.015
scoped_resource gen 24 27 28 1,339 0.018
parse gen 24 25 22 946 0.026
containers gen 4 9 3 126 0.032
files gen 4 7 4 102 0.038
classes gen 2 3 1 39 0.047
tuple_return_value gen 13 15 13 247 0.053
gc_stack_roots gen 1 1 1 17 0.087
length gen 36 34 36 237 0.153
cartesian gen 67 72 70 392 0.171
escape gen 93 99 92 460 0.203
cgi gen 255 247 256 732 0.349
varargs gen 15 13 18 30 0.504
control_flow gen 137 177 134 149 0.918

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.6 0.38
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
cartesian gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.7 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.7 3.8 3.7 8.0 0.46
cgi gen 3.5 3.4 3.5 7.6 0.47
escape gen 3.5 3.4 3.4 7.6 0.47
fib_recursive gen 3.7 3.7 3.5 7.7 0.47
control_flow gen 3.7 3.7 3.7 7.6 0.48
fib_iter gen 3.7 3.7 3.5 7.6 0.48
length gen 3.7 3.7 3.5 7.6 0.48
modules gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.8 3.7 3.7 7.7 0.49
files gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.4 28.5 28.7 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
fib_iter gen 0 1 1 10 0.000
fib_recursive gen 0 2 1 8 0.000
gc_stack_roots gen 0 0 0 5 0.000
loops gen 0 0 1 9 0.000
classes gen 1 0 2 10 0.093
parse gen 1 2 4 10 0.098
asdl_generated gen 2 2 3 12 0.165
control_flow gen 1 2 2 6 0.166
length gen 2 3 3 9 0.223
tuple_return_value gen 2 2 2 9 0.224
modules gen 1 0 1 6 0.231
containers gen 10 6 11 28 0.361
cgi gen 4 6 3 11 0.363
files gen 3 1 3 6 0.484
scoped_resource gen 6 5 2 9 0.675
varargs gen 23 25 21 29 0.799
escape gen 6 6 5 6 1.002
cartesian gen 8 8 5 6 1.329

raw benchmark files