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
classes gen 0 2 1 36 0.000
modules gen 1 1 0 231 0.003
fib_iter gen 5 6 4 981 0.005
fib_recursive gen 6 5 4 1,072 0.006
loops gen 2 3 1 362 0.007
asdl_generated gen 8 8 9 510 0.016
scoped_resource gen 24 28 29 1,393 0.017
parse gen 22 25 18 963 0.022
files gen 4 7 6 103 0.038
containers gen 6 3 7 128 0.046
tuple_return_value gen 14 15 14 245 0.057
gc_stack_roots gen 1 1 1 12 0.120
length gen 33 33 38 234 0.143
cartesian gen 70 76 70 405 0.173
escape gen 92 101 95 441 0.209
cgi gen 259 249 260 749 0.346
varargs gen 19 10 15 29 0.659
control_flow gen 135 177 133 148 0.914

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 2 2 7 0.000
fib_recursive gen 0 1 2 8 0.000
gc_stack_roots gen 0 1 1 9 0.000
loops gen 0 0 2 10 0.000
modules gen 1 1 1 11 0.064
tuple_return_value gen 1 1 1 9 0.110
cgi gen 2 2 1 7 0.286
fib_iter gen 2 1 3 6 0.295
containers gen 8 11 6 25 0.313
parse gen 4 2 7 12 0.326
asdl_generated gen 2 2 2 6 0.330
classes gen 3 1 2 7 0.388
length gen 5 3 2 12 0.423
cartesian gen 5 4 5 10 0.500
varargs gen 19 28 24 29 0.659
files gen 3 0 1 4 0.720
escape gen 6 5 3 8 0.752
scoped_resource gen 6 3 3 5 1.193

raw benchmark files