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 0 0 0 240 0.000
loops gen 1 2 2 363 0.002
fib_recursive gen 4 6 6 1,108 0.004
fib_iter gen 7 7 6 948 0.007
scoped_resource gen 25 28 27 1,409 0.018
asdl_generated gen 10 8 8 512 0.020
parse gen 24 23 24 943 0.026
classes gen 1 2 2 28 0.033
containers gen 5 6 5 126 0.040
tuple_return_value gen 11 15 14 255 0.042
files gen 6 6 6 97 0.060
gc_stack_roots gen 1 1 1 9 0.079
length gen 36 34 31 242 0.149
cartesian gen 66 75 71 392 0.168
escape gen 94 100 90 435 0.215
cgi gen 258 249 255 730 0.354
control_flow gen 136 182 133 151 0.901
varargs gen 25 23 17 24 1.032

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.3 4.5 11.5 0.39
cgi gen 3.4 3.7 3.7 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.5 0.46
escape gen 3.5 3.5 3.7 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_iter gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.7 3.5 3.4 7.7 0.47
length gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
files gen 3.8 3.8 3.5 7.7 0.49
control_flow gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.5 28.4 48.2 0.59
varargs gen 5.4 5.5 5.5 7.7 0.69

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 2 2 7 0.000
control_flow gen 0 1 3 6 0.000
fib_iter gen 0 0 1 5 0.000
gc_stack_roots gen 1 0 0 12 0.059
parse gen 1 4 2 15 0.068
files gen 1 1 1 10 0.096
classes gen 2 1 1 16 0.116
cgi gen 1 3 3 8 0.125
fib_recursive gen 2 0 0 8 0.224
modules gen 1 1 2 5 0.290
containers gen 9 9 9 31 0.290
loops gen 2 1 1 5 0.342
varargs gen 14 16 22 33 0.420
length gen 3 2 8 7 0.429
escape gen 7 5 8 9 0.775
scoped_resource gen 5 4 4 6 0.830
cartesian gen 9 5 5 8 1.124
tuple_return_value gen 4 2 1 2 1.966

raw benchmark files