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 359 0.005
fib_recursive gen 6 6 6 1,080 0.006
modules gen 1 0 1 229 0.006
fib_iter gen 7 6 6 961 0.008
asdl_generated gen 8 8 8 514 0.016
scoped_resource gen 28 28 28 1,350 0.021
parse gen 23 23 22 962 0.023
containers gen 6 9 5 132 0.046
tuple_return_value gen 14 16 15 249 0.057
files gen 6 6 6 99 0.059
gc_stack_roots gen 1 0 0 19 0.074
classes gen 3 1 3 31 0.090
length gen 35 28 43 241 0.145
cartesian gen 67 72 102 406 0.165
escape gen 93 100 94 432 0.216
cgi gen 256 251 255 745 0.344
varargs gen 18 22 15 27 0.670
control_flow gen 134 179 134 145 0.927

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.3 11.6 0.37
asdl_generated gen 3.3 3.4 3.4 7.6 0.43
gc_stack_roots gen 3.3 3.3 3.3 7.6 0.43
cgi gen 3.4 3.7 3.5 7.7 0.44
fib_recursive gen 3.4 3.7 3.7 7.7 0.44
cartesian gen 3.4 3.5 3.4 7.6 0.45
scoped_resource gen 3.5 3.5 3.7 7.7 0.46
escape gen 3.5 3.5 3.7 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.9 8.1 0.47
files gen 3.7 3.7 3.7 7.7 0.47
fib_iter gen 3.7 3.4 3.7 7.6 0.48
loops gen 3.7 3.7 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.5 28.5 28.5 48.2 0.59
varargs gen 5.2 5.5 5.4 7.6 0.69

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 2 0 14 0.000
fib_iter gen 0 1 1 8 0.000
fib_recursive gen 0 0 0 8 0.000
gc_stack_roots gen 0 1 1 2 0.000
modules gen 0 2 1 12 0.000
files gen 1 1 1 9 0.108
control_flow gen 1 1 2 9 0.111
tuple_return_value gen 1 0 0 8 0.128
loops gen 1 1 1 7 0.128
scoped_resource gen 2 4 2 9 0.222
asdl_generated gen 2 2 2 7 0.287
parse gen 3 4 4 10 0.308
containers gen 8 6 9 26 0.310
length gen 4 8 5 11 0.363
cgi gen 3 3 6 5 0.600
escape gen 6 5 3 9 0.671
varargs gen 21 16 23 31 0.681
cartesian gen 8 9 4 9 0.888

raw benchmark files