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
modules gen 1 1 0 233 0.003
fib_recursive gen 5 4 5 1,090 0.005
fib_iter gen 5 6 7 959 0.005
loops gen 3 3 3 359 0.007
asdl_generated gen 9 8 8 506 0.018
scoped_resource gen 26 31 24 1,390 0.019
parse gen 23 24 24 946 0.025
containers gen 4 5 6 126 0.032
classes gen 2 3 1 34 0.052
tuple_return_value gen 13 15 12 251 0.052
gc_stack_roots gen 1 0 1 13 0.054
files gen 6 5 6 101 0.057
length gen 33 34 33 241 0.138
cartesian gen 68 76 71 428 0.159
escape gen 98 102 94 436 0.224
cgi gen 258 236 260 776 0.332
varargs gen 13 19 19 23 0.566
control_flow gen 131 179 134 148 0.889

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.3 3.4 3.3 7.6 0.43
escape gen 3.4 3.5 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.5 7.6 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
fib_iter gen 3.5 3.7 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
fib_recursive gen 3.5 3.7 3.5 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
length gen 3.7 3.5 3.5 7.7 0.47
loops gen 3.7 3.5 3.5 7.7 0.47
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
files gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.4 28.4 28.5 48.2 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
loops gen 0 0 0 8 0.000
modules gen 1 0 1 8 0.086
gc_stack_roots gen 1 1 1 7 0.100
classes gen 1 0 2 8 0.109
escape gen 1 3 3 8 0.125
fib_recursive gen 1 3 2 8 0.129
asdl_generated gen 1 2 2 7 0.142
files gen 1 2 1 6 0.160
parse gen 2 4 1 10 0.204
tuple_return_value gen 2 2 3 9 0.224
fib_iter gen 2 1 0 9 0.225
containers gen 9 10 8 33 0.276
control_flow gen 4 1 2 7 0.574
scoped_resource gen 4 1 6 7 0.579
cgi gen 5 2 0 8 0.626
varargs gen 25 20 19 33 0.759
length gen 5 3 6 6 0.837
cartesian gen 8 4 4 5 1.600

raw benchmark files