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 15 0.000
modules gen 1 1 1 235 0.003
fib_recursive gen 5 6 5 1,086 0.004
fib_iter gen 5 5 7 993 0.005
loops gen 3 3 3 361 0.007
asdl_generated gen 6 6 10 513 0.012
scoped_resource gen 28 27 28 1,400 0.020
parse gen 24 23 22 980 0.025
classes gen 1 1 1 36 0.037
files gen 5 7 6 99 0.049
tuple_return_value gen 12 14 11 242 0.050
containers gen 8 7 5 131 0.061
length gen 33 34 33 242 0.136
cartesian gen 71 71 71 423 0.168
escape gen 92 100 92 432 0.213
cgi gen 244 252 259 732 0.333
varargs gen 16 18 16 26 0.624
control_flow gen 136 180 131 148 0.917

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
gc_stack_roots gen 3.3 3.4 3.4 7.6 0.43
cartesian gen 3.4 3.5 3.5 7.6 0.45
cgi gen 3.4 3.5 3.4 7.6 0.45
asdl_generated gen 3.5 3.3 3.4 7.7 0.46
fib_recursive gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.4 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
files gen 3.5 3.8 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
modules gen 3.7 3.5 3.5 7.7 0.47
loops gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
length gen 3.7 3.4 3.7 7.5 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.6 28.4 28.5 48.2 0.59
varargs gen 5.4 5.4 5.6 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 1 4 6 0.000
loops gen 0 0 0 7 0.000
modules gen 1 0 0 8 0.089
parse gen 1 4 4 8 0.127
classes gen 1 2 1 8 0.168
fib_recursive gen 2 0 1 10 0.188
scoped_resource gen 2 4 2 10 0.199
gc_stack_roots gen 1 0 0 6 0.233
files gen 2 0 1 8 0.241
tuple_return_value gen 3 3 4 11 0.274
containers gen 6 8 9 21 0.284
fib_iter gen 2 2 0 6 0.336
cgi gen 4 2 3 9 0.445
asdl_generated gen 4 4 0 8 0.499
cartesian gen 4 9 5 7 0.571
escape gen 5 5 5 8 0.626
varargs gen 23 21 22 32 0.729
length gen 6 3 6 7 0.856

raw benchmark files