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 6 1,088 0.006
modules gen 1 1 1 237 0.006
fib_iter gen 6 5 7 950 0.006
loops gen 3 2 3 357 0.007
asdl_generated gen 8 8 9 528 0.015
scoped_resource gen 27 28 27 1,382 0.020
containers gen 3 5 8 119 0.027
parse gen 25 27 19 954 0.027
classes gen 1 2 3 33 0.041
tuple_return_value gen 13 13 14 250 0.052
files gen 6 6 6 97 0.059
gc_stack_roots gen 1 0 1 11 0.123
length gen 30 32 30 241 0.124
cartesian gen 67 73 72 401 0.167
escape gen 91 97 92 430 0.213
cgi gen 260 249 257 736 0.353
varargs gen 15 18 14 26 0.576
control_flow gen 131 176 134 145 0.904

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.3 4.3 4.3 11.4 0.38
asdl_generated gen 3.3 3.4 3.3 7.6 0.43
cartesian gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
modules gen 3.4 3.5 3.5 7.6 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.7 3.4 7.7 0.46
scoped_resource gen 3.5 3.5 3.4 7.7 0.46
cgi gen 3.5 3.7 3.5 7.6 0.47
fib_iter gen 3.5 3.4 3.7 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
parse gen 3.8 3.8 3.9 8.1 0.47
length gen 3.7 3.5 3.5 7.6 0.48
files gen 3.8 3.7 3.8 7.7 0.49
control_flow gen 3.8 3.8 3.7 7.6 0.50
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.5 28.6 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_recursive gen 0 0 0 4 0.000
gc_stack_roots gen 0 1 1 9 0.000
loops gen 0 1 0 9 0.000
modules gen 0 1 0 9 0.000
parse gen 0 0 6 7 0.000
files gen 1 1 1 9 0.105
classes gen 1 1 0 10 0.134
fib_iter gen 1 2 0 6 0.168
cgi gen 2 2 3 10 0.200
asdl_generated gen 2 2 1 8 0.247
scoped_resource gen 3 3 3 10 0.303
containers gen 11 9 5 31 0.340
tuple_return_value gen 2 3 1 5 0.397
escape gen 7 8 6 10 0.703
varargs gen 23 20 24 30 0.766
control_flow gen 4 2 2 5 0.794
length gen 9 5 9 9 0.995
cartesian gen 8 8 3 8 0.999

raw benchmark files