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 3 1 356 0.005
fib_recursive gen 6 4 4 1,112 0.006
modules gen 1 1 1 237 0.006
fib_iter gen 7 6 7 975 0.007
asdl_generated gen 7 7 9 519 0.013
scoped_resource gen 25 29 28 1,376 0.018
parse gen 23 26 23 960 0.024
containers gen 5 5 4 124 0.040
tuple_return_value gen 12 16 14 249 0.047
files gen 7 6 6 99 0.068
classes gen 3 1 2 33 0.082
gc_stack_roots gen 1 1 1 12 0.111
length gen 33 34 35 245 0.134
cartesian gen 69 73 70 398 0.173
escape gen 95 97 93 433 0.219
cgi gen 257 251 255 735 0.349
varargs gen 16 18 17 26 0.622
control_flow gen 134 176 133 151 0.888

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.5 4.5 11.5 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.4 3.5 3.5 7.6 0.45
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
modules 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.5 3.5 3.7 7.5 0.47
length gen 3.7 3.7 3.7 7.7 0.47
tuple_return_value gen 3.7 3.7 3.5 7.7 0.47
parse gen 3.8 3.8 3.7 8.0 0.47
control_flow gen 3.7 3.8 3.8 7.6 0.48
files gen 3.7 3.7 3.7 7.6 0.48
containers gen 28.3 28.5 28.5 48.2 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
classes gen 0 2 1 10 0.000
fib_iter gen 0 1 0 11 0.000
fib_recursive gen 0 3 2 7 0.000
files gen 0 1 1 8 0.000
gc_stack_roots gen 0 1 1 8 0.000
modules gen 0 0 1 8 0.000
loops gen 1 0 2 8 0.105
parse gen 2 1 3 11 0.185
control_flow gen 1 2 2 4 0.250
cgi gen 3 1 6 10 0.300
containers gen 9 9 10 28 0.317
asdl_generated gen 3 3 1 9 0.333
escape gen 3 6 5 8 0.374
tuple_return_value gen 3 0 1 7 0.419
varargs gen 22 21 22 31 0.717
length gen 6 2 3 7 0.852
cartesian gen 6 7 5 7 0.853
scoped_resource gen 5 2 2 4 1.282

raw benchmark files