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 1 12 0.000
loops gen 1 3 1 311 0.003
fib_recursive gen 5 5 6 1,021 0.005
modules gen 1 0 1 213 0.005
fib_iter gen 5 5 6 771 0.006
asdl_generated gen 8 8 9 507 0.017
scoped_resource gen 30 29 28 1,227 0.024
parse gen 23 26 22 904 0.025
containers gen 4 3 6 110 0.037
classes gen 1 1 2 33 0.044
tuple_return_value gen 13 16 14 219 0.061
files gen 6 5 4 90 0.068
length gen 31 30 32 221 0.141
cartesian gen 66 70 64 362 0.183
escape gen 85 94 84 377 0.225
cgi gen 183 175 185 660 0.277
varargs gen 17 18 18 21 0.805
control_flow gen 124 166 124 134 0.925

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
asdl_generated gen 3.4 3.4 3.4 7.9 0.43
cartesian gen 3.5 3.7 3.7 7.7 0.46
cgi gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
gc_stack_roots gen 3.5 3.4 3.5 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.9 0.47
escape gen 3.7 3.5 3.5 7.9 0.47
parse gen 3.8 3.7 3.9 8.1 0.47
length gen 3.7 3.5 3.5 7.7 0.47
modules gen 3.7 3.7 3.5 7.7 0.47
scoped_resource gen 3.7 3.5 3.7 7.7 0.47
loops gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
fib_iter gen 3.8 3.7 3.5 7.9 0.48
files gen 3.8 3.9 3.7 7.7 0.49
containers gen 28.4 28.5 28.8 48.2 0.59
varargs gen 5.6 5.4 5.8 7.6 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_recursive gen 0 0 0 5 0.000
files gen 0 1 2 3 0.000
modules gen 0 1 1 3 0.000
scoped_resource gen 0 2 1 3 0.000
control_flow gen 1 2 1 7 0.143
classes gen 1 1 0 5 0.146
asdl_generated gen 1 2 0 7 0.150
length gen 1 2 0 6 0.167
gc_stack_roots gen 1 0 0 5 0.227
escape gen 1 1 3 4 0.249
tuple_return_value gen 1 0 0 4 0.254
fib_iter gen 2 1 0 6 0.301
parse gen 1 0 2 3 0.331
loops gen 1 0 1 3 0.356
containers gen 8 9 6 21 0.389
varargs gen 7 6 6 15 0.464
cartesian gen 2 4 5 3 0.661
cgi gen 3 3 1 3 1.001

raw benchmark files