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
modules gen 1 1 1 236 0.003
fib_recursive gen 5 5 4 1,116 0.005
fib_iter gen 6 7 5 972 0.006
loops gen 3 3 1 367 0.007
asdl_generated gen 8 10 9 508 0.015
scoped_resource gen 27 29 29 1,364 0.020
parse gen 23 24 22 941 0.025
classes gen 1 2 2 30 0.030
containers gen 5 6 3 126 0.039
tuple_return_value gen 12 14 14 256 0.047
gc_stack_roots gen 1 0 1 15 0.049
files gen 6 6 7 99 0.059
length gen 31 35 37 241 0.127
cartesian gen 70 70 66 410 0.170
escape gen 96 100 96 426 0.226
cgi gen 257 247 252 739 0.348
varargs gen 22 13 19 25 0.865
control_flow gen 134 179 136 143 0.938

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.6 0.37
fib_recursive gen 3.4 3.7 3.5 7.7 0.44
modules gen 3.4 3.5 3.5 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.4 3.4 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
fib_iter gen 3.5 3.5 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.4 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.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.6 0.48
tuple_return_value gen 3.8 3.8 3.8 7.7 0.49
control_flow gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.4 28.6 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
loops gen 0 0 1 5 0.000
modules gen 1 0 0 7 0.102
files gen 1 1 0 9 0.109
gc_stack_roots gen 1 1 0 6 0.123
fib_iter gen 1 0 2 8 0.125
classes gen 2 1 1 13 0.143
fib_recursive gen 1 1 2 6 0.173
parse gen 2 3 4 9 0.217
control_flow gen 2 0 0 9 0.221
escape gen 2 8 4 8 0.250
scoped_resource gen 3 3 1 10 0.297
tuple_return_value gen 3 2 1 9 0.332
asdl_generated gen 2 0 1 6 0.363
containers gen 9 9 11 23 0.387
cgi gen 3 5 7 7 0.429
varargs gen 17 25 20 30 0.557
cartesian gen 5 8 7 6 0.831
length gen 7 1 2 6 1.199

raw benchmark files