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
fib_recursive gen 5 4 4 1,084 0.005
modules gen 1 0 1 236 0.006
fib_iter gen 6 6 7 957 0.006
loops gen 3 2 2 360 0.007
asdl_generated gen 8 6 9 519 0.015
scoped_resource gen 28 28 27 1,393 0.020
containers gen 3 5 5 127 0.024
parse gen 23 27 23 966 0.024
tuple_return_value gen 12 11 15 253 0.048
files gen 5 7 6 101 0.048
classes gen 3 1 2 31 0.085
gc_stack_roots gen 1 1 0 15 0.092
length gen 37 35 36 249 0.147
cartesian gen 72 74 71 392 0.183
escape gen 95 99 96 432 0.220
cgi gen 257 250 258 731 0.351
varargs gen 15 19 17 22 0.673
control_flow gen 134 179 133 145 0.929

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.3 4.3 11.5 0.38
asdl_generated gen 3.4 3.4 3.3 7.7 0.44
cgi gen 3.4 3.5 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
cartesian gen 3.5 3.5 3.4 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.7 3.7 7.6 0.47
loops gen 3.5 3.5 3.7 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
fib_recursive gen 3.7 3.5 3.7 7.7 0.47
modules gen 3.7 3.7 3.5 7.7 0.47
parse gen 3.8 3.7 3.7 8.0 0.47
length gen 3.7 3.5 3.5 7.6 0.48
files gen 3.8 3.8 3.7 7.6 0.50
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.5 28.5 48.2 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 2 1 11 0.000
gc_stack_roots gen 0 0 1 5 0.000
loops gen 0 1 1 11 0.000
modules gen 0 1 1 8 0.000
fib_recursive gen 1 2 2 9 0.115
fib_iter gen 1 1 0 6 0.168
asdl_generated gen 2 4 1 9 0.220
parse gen 2 0 2 8 0.243
length gen 2 2 3 8 0.256
files gen 2 0 1 7 0.279
control_flow gen 2 0 2 7 0.285
scoped_resource gen 2 4 3 7 0.289
tuple_return_value gen 3 6 0 9 0.334
cartesian gen 3 6 6 9 0.337
cgi gen 3 1 2 8 0.375
containers gen 10 9 9 25 0.406
escape gen 3 6 3 6 0.500
varargs gen 24 19 21 33 0.718

raw benchmark files