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
gc_stack_roots gen 0 0 0 12 0.000
modules gen 1 0 0 232 0.003
fib_recursive gen 4 4 6 1,106 0.004
fib_iter gen 6 7 5 943 0.006
loops gen 3 2 1 355 0.007
asdl_generated gen 8 8 7 512 0.015
scoped_resource gen 24 28 27 1,342 0.018
containers gen 3 4 8 128 0.023
parse gen 23 25 24 950 0.025
files gen 5 6 7 98 0.049
classes gen 2 1 3 30 0.060
tuple_return_value gen 15 15 13 245 0.062
cartesian gen 71 78 70 387 0.183
length gen 51 32 36 239 0.213
escape gen 95 102 88 441 0.216
cgi gen 258 249 257 731 0.353
varargs gen 16 17 17 22 0.721
control_flow gen 135 176 132 144 0.935

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.5 0.39
asdl_generated gen 3.3 3.3 3.4 7.6 0.43
gc_stack_roots gen 3.3 3.4 3.4 7.6 0.43
modules gen 3.5 3.5 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.4 7.6 0.47
cgi gen 3.5 3.5 3.4 7.6 0.47
escape gen 3.5 3.5 3.4 7.6 0.47
fib_recursive gen 3.5 3.5 3.7 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
control_flow gen 3.7 3.7 3.8 7.6 0.48
fib_iter gen 3.7 3.7 3.7 7.6 0.48
files gen 3.8 3.8 3.5 7.7 0.49
tuple_return_value gen 3.8 3.7 3.7 7.7 0.49
containers gen 28.5 28.5 28.6 48.2 0.59
varargs gen 5.6 5.5 5.5 7.6 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
loops gen 0 1 2 8 0.000
tuple_return_value gen 0 1 2 10 0.000
classes gen 1 2 0 13 0.071
fib_iter gen 1 0 2 13 0.078
modules gen 1 1 1 8 0.086
control_flow gen 1 2 3 9 0.111
gc_stack_roots gen 1 1 1 8 0.171
files gen 2 1 0 10 0.193
cgi gen 1 3 3 5 0.200
asdl_generated gen 2 2 3 8 0.246
fib_recursive gen 2 2 0 7 0.252
parse gen 2 2 1 8 0.254
containers gen 11 10 6 23 0.466
cartesian gen 4 4 5 8 0.499
escape gen 3 4 10 5 0.602
varargs gen 22 21 21 36 0.623
scoped_resource gen 7 4 3 10 0.690
length gen 10 4 3 8 1.248

raw benchmark files