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
loops gen 1 2 1 385 0.002
fib_recursive gen 6 6 6 1,109 0.006
modules gen 1 1 1 241 0.006
fib_iter gen 7 7 7 964 0.007
asdl_generated gen 8 8 8 520 0.015
containers gen 2 6 6 129 0.015
scoped_resource gen 28 26 25 1,405 0.020
parse gen 21 26 24 946 0.023
classes gen 1 1 2 34 0.026
files gen 5 5 5 105 0.046
tuple_return_value gen 13 14 13 249 0.053
gc_stack_roots gen 1 1 1 17 0.082
length gen 36 32 29 261 0.138
cartesian gen 70 76 75 393 0.178
escape gen 96 97 97 425 0.226
cgi gen 258 249 259 729 0.354
varargs gen 15 21 20 33 0.450
control_flow gen 135 177 136 143 0.949

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.3 11.6 0.38
asdl_generated gen 3.4 3.3 3.5 7.7 0.44
cartesian gen 3.4 3.5 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.4 7.7 0.44
escape gen 3.4 3.5 3.5 7.6 0.45
parse gen 3.7 3.9 3.7 8.1 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
files gen 3.5 3.8 3.7 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
length gen 3.7 3.7 3.5 7.7 0.47
loops gen 3.7 3.5 3.5 7.7 0.47
fib_iter gen 3.7 3.7 3.7 7.6 0.48
fib_recursive gen 3.7 3.5 3.7 7.6 0.48
scoped_resource gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.6 0.50
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.4 28.5 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
control_flow gen 0 1 1 11 0.000
fib_iter gen 0 0 0 7 0.000
fib_recursive gen 0 0 0 12 0.000
gc_stack_roots gen 0 0 1 4 0.000
modules gen 0 0 1 8 0.000
loops gen 2 1 2 11 0.155
classes gen 2 2 1 10 0.179
escape gen 2 8 1 8 0.251
tuple_return_value gen 2 3 2 8 0.253
length gen 2 5 10 7 0.286
asdl_generated gen 2 2 2 7 0.287
cgi gen 3 3 2 8 0.375
files gen 2 2 2 5 0.390
parse gen 4 1 2 10 0.408
scoped_resource gen 4 6 5 9 0.444
containers gen 12 9 8 25 0.475
cartesian gen 5 5 3 8 0.624
varargs gen 24 18 18 24 0.989

raw benchmark files