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
fib_recursive gen 6 6 5 1,053 0.006
modules gen 2 0 1 230 0.007
fib_iter gen 7 7 7 920 0.008
loops gen 3 2 2 333 0.008
asdl_generated gen 8 10 7 463 0.017
scoped_resource gen 29 31 30 1,265 0.023
parse gen 22 28 25 957 0.023
tuple_return_value gen 14 18 14 219 0.063
containers gen 9 7 4 131 0.065
classes gen 2 3 2 26 0.074
files gen 7 5 6 91 0.082
gc_stack_roots gen 1 2 2 11 0.138
length gen 36 33 34 243 0.149
cartesian gen 74 78 78 371 0.200
escape gen 98 103 98 411 0.240
cgi gen 259 254 262 642 0.403
varargs gen 20 15 20 33 0.616
control_flow gen 127 172 134 138 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.3 11.5 0.39
asdl_generated gen 3.4 3.5 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.4 7.7 0.44
cgi gen 3.4 3.5 3.4 7.6 0.45
cartesian gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.4 3.4 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.5 7.6 0.47
scoped_resource gen 3.5 3.4 3.5 7.6 0.47
files gen 3.5 3.7 3.7 7.5 0.47
loops gen 3.5 3.7 3.5 7.5 0.47
length gen 3.7 3.7 3.4 7.7 0.47
modules gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.9 3.7 3.8 8.1 0.48
tuple_return_value gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.4 28.7 28.7 48.2 0.59
varargs gen 5.4 5.4 5.6 7.7 0.69

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_recursive gen 0 0 1 6 0.000
files gen 0 3 2 8 0.000
gc_stack_roots gen 0 0 0 11 0.000
loops gen 0 1 1 10 0.000
modules gen 0 2 1 10 0.000
classes gen 1 0 1 18 0.053
containers gen 6 7 10 28 0.204
control_flow gen 2 0 3 9 0.221
fib_iter gen 1 1 1 4 0.247
asdl_generated gen 2 2 3 7 0.282
tuple_return_value gen 2 0 2 7 0.283
length gen 3 7 5 10 0.302
parse gen 5 1 2 12 0.416
cgi gen 5 3 4 12 0.416
scoped_resource gen 4 4 3 9 0.443
varargs gen 21 26 21 30 0.712
escape gen 7 6 7 8 0.878
cartesian gen 11 11 9 10 1.092

raw benchmark files