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
loops gen 2 2 2 363 0.005
fib_recursive gen 6 6 5 1,074 0.006
modules gen 1 0 0 239 0.006
fib_iter gen 7 7 6 964 0.007
asdl_generated gen 9 7 7 523 0.017
scoped_resource gen 28 25 24 1,382 0.020
parse gen 22 24 23 948 0.023
containers gen 5 5 8 126 0.039
tuple_return_value gen 11 13 12 246 0.047
files gen 5 6 7 101 0.047
classes gen 2 2 3 36 0.052
gc_stack_roots gen 1 0 0 13 0.052
length gen 35 33 37 242 0.144
cartesian gen 69 65 70 394 0.174
escape gen 99 105 90 430 0.231
cgi gen 259 236 255 742 0.349
varargs gen 14 18 18 28 0.501
control_flow gen 132 179 136 143 0.924

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.3 11.6 0.38
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
asdl_generated gen 3.4 3.5 3.3 7.6 0.45
cartesian gen 3.4 3.5 3.4 7.6 0.45
cgi gen 3.4 3.5 3.4 7.6 0.45
parse gen 3.7 3.9 3.5 8.1 0.45
fib_recursive gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.7 3.7 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
files gen 3.7 3.8 3.8 7.7 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
control_flow gen 3.7 3.7 3.7 7.6 0.48
fib_iter gen 3.7 3.4 3.7 7.6 0.48
modules gen 3.7 3.7 3.5 7.6 0.48
containers gen 28.7 28.6 28.5 48.4 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 0 1 8 0.000
fib_recursive gen 0 0 1 7 0.000
modules gen 0 1 1 6 0.000
gc_stack_roots gen 1 1 1 7 0.097
loops gen 1 2 1 8 0.106
asdl_generated gen 1 3 3 9 0.109
classes gen 1 1 0 7 0.134
scoped_resource gen 2 6 6 7 0.285
escape gen 3 2 8 10 0.300
files gen 2 1 0 6 0.317
parse gen 4 3 2 12 0.328
control_flow gen 4 0 1 12 0.331
cgi gen 3 5 7 9 0.332
containers gen 9 9 6 26 0.340
tuple_return_value gen 4 4 3 9 0.426
length gen 4 3 1 9 0.441
varargs gen 25 20 20 28 0.894
cartesian gen 6 14 5 6 1.010

raw benchmark files