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 1 0 10 0.000
modules gen 0 1 1 239 0.000
loops gen 2 2 2 364 0.005
fib_recursive gen 6 5 6 1,109 0.006
fib_iter gen 6 5 6 968 0.006
asdl_generated gen 9 9 9 509 0.018
scoped_resource gen 27 31 25 1,337 0.021
parse gen 23 21 23 961 0.024
containers gen 3 7 5 122 0.025
classes gen 1 1 3 36 0.039
tuple_return_value gen 13 15 12 251 0.052
files gen 6 7 7 99 0.059
cartesian gen 66 74 71 448 0.147
length gen 36 33 37 241 0.148
escape gen 94 99 96 435 0.216
cgi gen 246 250 255 741 0.332
varargs gen 15 21 14 27 0.552
control_flow gen 137 177 135 144 0.948

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.3 4.5 11.4 0.39
gc_stack_roots gen 3.3 3.3 3.4 7.7 0.42
asdl_generated gen 3.3 3.3 3.3 7.6 0.43
cartesian gen 3.5 3.5 3.5 7.6 0.47
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
length 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.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.9 3.8 8.1 0.47
fib_recursive gen 3.7 3.5 3.5 7.7 0.47
control_flow gen 3.7 3.8 3.7 7.6 0.48
fib_iter gen 3.7 3.7 3.5 7.6 0.48
files gen 3.8 3.8 3.8 7.6 0.50
tuple_return_value gen 3.8 3.5 3.7 7.6 0.50
containers gen 28.3 28.7 28.3 48.2 0.59
varargs gen 5.4 5.5 5.5 7.7 0.69

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_recursive gen 0 1 0 10 0.000
loops gen 1 1 1 9 0.096
files gen 1 0 0 9 0.108
fib_iter gen 1 2 1 8 0.127
gc_stack_roots gen 1 1 1 10 0.140
cgi gen 1 2 5 7 0.143
asdl_generated gen 1 1 1 6 0.166
classes gen 1 2 0 7 0.199
control_flow gen 2 1 1 9 0.223
modules gen 1 1 0 6 0.247
parse gen 2 6 2 8 0.254
tuple_return_value gen 2 2 3 7 0.288
length gen 3 4 2 9 0.330
containers gen 11 9 9 31 0.355
scoped_resource gen 3 1 5 8 0.368
escape gen 4 6 3 8 0.501
varargs gen 24 17 25 30 0.795
cartesian gen 9 6 4 5 1.793

raw benchmark files