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 11 0.000
modules gen 0 1 0 237 0.000
fib_recursive gen 4 5 4 1,096 0.004
fib_iter gen 4 7 6 965 0.005
loops gen 2 2 2 358 0.005
asdl_generated gen 8 7 9 510 0.016
scoped_resource gen 28 29 25 1,391 0.020
parse gen 24 27 24 938 0.025
containers gen 4 6 7 133 0.030
tuple_return_value gen 14 13 12 247 0.057
classes gen 2 2 2 31 0.059
files gen 6 7 6 98 0.061
length gen 32 30 36 248 0.128
cartesian gen 67 74 67 388 0.172
escape gen 91 99 96 430 0.212
cgi gen 259 249 258 735 0.352
varargs gen 21 13 17 27 0.785
control_flow gen 135 177 137 151 0.895

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.2 11.5 0.39
cartesian gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
asdl_generated gen 3.5 3.4 3.3 7.7 0.46
fib_recursive gen 3.5 3.7 3.5 7.7 0.46
modules gen 3.5 3.7 3.7 7.7 0.46
cgi gen 3.5 3.4 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.7 3.4 3.4 7.7 0.47
length gen 3.7 3.4 3.5 7.7 0.47
loops gen 3.7 3.5 3.5 7.7 0.47
parse gen 3.8 3.7 3.8 8.0 0.48
scoped_resource gen 3.7 3.5 3.4 7.6 0.48
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.7 0.49
files gen 3.8 3.7 3.5 7.7 0.49
containers gen 28.3 28.5 28.7 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
control_flow gen 0 3 1 8 0.000
classes gen 1 1 1 12 0.076
files gen 1 0 1 8 0.125
gc_stack_roots gen 1 0 0 10 0.137
loops gen 1 1 1 6 0.142
tuple_return_value gen 1 3 3 6 0.166
modules gen 1 0 1 8 0.177
fib_recursive gen 2 1 2 10 0.178
parse gen 2 0 1 10 0.206
scoped_resource gen 2 3 6 9 0.218
asdl_generated gen 2 4 1 8 0.250
cgi gen 3 3 2 10 0.300
containers gen 10 8 7 23 0.432
fib_iter gen 3 0 1 6 0.446
varargs gen 17 26 22 30 0.572
escape gen 7 6 2 10 0.701
cartesian gen 8 6 8 10 0.799
length gen 7 7 3 3 2.306

raw benchmark files