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 226 0.000
fib_recursive gen 5 5 4 1,004 0.005
loops gen 2 2 1 309 0.007
fib_iter gen 5 7 5 740 0.007
asdl_generated gen 8 9 7 510 0.017
scoped_resource gen 25 29 29 1,238 0.020
parse gen 20 24 24 899 0.022
classes gen 1 2 1 32 0.036
containers gen 6 4 1 112 0.056
files gen 5 4 4 89 0.058
tuple_return_value gen 13 17 13 220 0.061
gc_stack_roots gen 1 1 0 12 0.091
length gen 32 32 31 222 0.145
cartesian gen 66 72 68 362 0.181
escape gen 83 93 83 388 0.215
cgi gen 183 177 186 658 0.279
varargs gen 16 13 15 21 0.775
control_flow gen 125 167 125 138 0.902

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.5 4.5 11.6 0.38
gc_stack_roots gen 3.3 3.4 3.5 7.7 0.42
cgi gen 3.5 3.7 3.5 7.9 0.45
asdl_generated gen 3.5 3.4 3.4 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
scoped_resource gen 3.5 3.7 3.7 7.6 0.47
length gen 3.7 3.7 3.8 7.9 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
escape gen 3.7 3.7 3.7 7.7 0.47
fib_recursive gen 3.7 3.7 3.7 7.7 0.47
fib_iter gen 3.7 3.8 3.7 7.6 0.48
control_flow gen 3.8 3.9 3.8 7.7 0.49
files gen 3.8 3.8 3.8 7.7 0.49
modules gen 3.8 3.5 3.7 7.7 0.49
loops gen 3.8 3.8 3.5 7.6 0.50
tuple_return_value gen 3.9 3.9 3.8 7.6 0.52
containers gen 28.5 28.7 28.7 48.2 0.59
varargs gen 5.5 5.6 5.6 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 0 1 4 0.000
length gen 0 0 2 7 0.000
loops gen 0 1 1 8 0.000
tuple_return_value gen 1 1 1 8 0.130
modules gen 1 1 0 7 0.163
files gen 1 2 3 6 0.173
fib_iter gen 1 0 2 6 0.179
classes gen 1 0 2 6 0.191
asdl_generated gen 1 1 2 5 0.212
fib_recursive gen 1 1 1 4 0.233
containers gen 6 9 12 19 0.329
escape gen 3 2 2 6 0.497
control_flow gen 1 1 1 2 0.498
varargs gen 8 11 9 16 0.508
cartesian gen 3 2 1 5 0.599
parse gen 4 2 0 5 0.799
cgi gen 3 1 0 3 1.002
scoped_resource gen 5 3 1 4 1.234

raw benchmark files