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 0 1 231 0.000
fib_recursive gen 6 5 6 1,101 0.006
loops gen 2 2 1 366 0.007
fib_iter gen 7 6 6 970 0.007
asdl_generated gen 7 8 8 511 0.014
scoped_resource gen 26 31 28 1,357 0.019
parse gen 24 25 23 952 0.025
classes gen 1 1 2 33 0.027
containers gen 4 4 6 133 0.031
tuple_return_value gen 12 15 12 245 0.048
files gen 7 6 5 106 0.064
gc_stack_roots gen 1 0 0 12 0.110
length gen 37 33 34 244 0.150
cartesian gen 71 79 67 387 0.184
escape gen 89 98 92 428 0.208
cgi gen 260 255 259 724 0.360
varargs gen 16 16 19 31 0.524
control_flow gen 137 177 134 144 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.3 4.3 4.2 11.5 0.38
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
escape gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
scoped_resource gen 3.4 3.5 3.7 7.6 0.45
cartesian gen 3.5 3.4 3.4 7.7 0.46
cgi gen 3.5 3.5 3.5 7.7 0.46
fib_iter gen 3.5 3.7 3.5 7.7 0.46
length gen 3.5 3.7 3.7 7.7 0.46
parse gen 3.7 3.9 3.8 8.0 0.46
loops gen 3.5 3.7 3.5 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
tuple_return_value gen 3.7 3.8 3.8 7.7 0.47
fib_recursive gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.7 3.7 7.7 0.49
files gen 3.8 3.7 3.7 7.7 0.49
containers gen 28.5 28.5 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
cgi gen 0 2 2 9 0.000
fib_iter gen 0 1 1 8 0.000
fib_recursive gen 0 1 0 6 0.000
files gen 0 1 2 4 0.000
gc_stack_roots gen 0 1 1 8 0.000
loops gen 0 1 2 6 0.000
control_flow gen 1 2 2 6 0.166
classes gen 2 2 1 10 0.176
modules gen 1 1 0 7 0.195
parse gen 2 2 2 10 0.206
length gen 2 4 5 8 0.254
tuple_return_value gen 3 2 3 10 0.294
scoped_resource gen 4 2 2 9 0.443
cartesian gen 4 1 7 8 0.502
containers gen 9 10 7 18 0.509
asdl_generated gen 3 2 2 4 0.746
varargs gen 22 23 19 25 0.893
escape gen 8 6 6 4 2.001

raw benchmark files