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 2 3 364 0.003
fib_recursive gen 4 6 6 1,116 0.004
modules gen 1 0 1 233 0.006
fib_iter gen 7 6 5 978 0.007
asdl_generated gen 8 8 7 511 0.016
scoped_resource gen 28 28 26 1,381 0.020
parse gen 22 24 25 933 0.023
classes gen 1 1 1 37 0.024
tuple_return_value gen 14 15 13 250 0.055
files gen 7 4 5 104 0.065
containers gen 8 8 6 124 0.068
length gen 34 33 34 256 0.132
cartesian gen 67 69 65 392 0.172
escape gen 90 98 91 434 0.208
cgi gen 256 246 258 724 0.354
varargs gen 16 18 11 28 0.577
control_flow gen 135 175 134 146 0.922

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.5 0.39
asdl_generated gen 3.3 3.4 3.4 7.7 0.42
gc_stack_roots gen 3.3 3.3 3.4 7.6 0.43
cartesian gen 3.5 3.5 3.4 7.7 0.46
cgi gen 3.5 3.7 3.4 7.7 0.46
fib_iter gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.7 3.7 7.7 0.46
length gen 3.5 3.7 3.5 7.7 0.46
escape gen 3.5 3.4 3.4 7.6 0.47
parse gen 3.8 3.8 3.7 8.1 0.47
loops gen 3.7 3.7 3.5 7.7 0.47
modules gen 3.7 3.7 3.7 7.6 0.48
scoped_resource gen 3.7 3.5 3.4 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.7 0.49
files gen 3.8 3.7 3.7 7.6 0.50
tuple_return_value gen 3.8 3.7 3.5 7.6 0.50
containers gen 28.3 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
fib_iter gen 0 1 2 5 0.000
files gen 0 3 2 4 0.000
modules gen 0 1 0 9 0.000
tuple_return_value gen 1 1 2 7 0.139
gc_stack_roots gen 1 0 0 9 0.156
loops gen 1 1 0 8 0.157
containers gen 5 6 8 27 0.194
scoped_resource gen 2 4 4 8 0.249
control_flow gen 1 3 1 4 0.249
fib_recursive gen 2 0 0 7 0.255
asdl_generated gen 2 2 3 7 0.286
classes gen 2 2 1 6 0.299
cgi gen 5 6 2 9 0.554
parse gen 4 3 1 7 0.561
length gen 5 3 5 7 0.709
varargs gen 22 20 27 29 0.766
cartesian gen 9 11 8 9 0.992
escape gen 8 7 7 8 0.995

raw benchmark files