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
classes gen 0 2 2 34 0.000
loops gen 1 3 2 363 0.003
fib_iter gen 4 7 6 972 0.005
fib_recursive gen 5 5 5 1,083 0.005
modules gen 2 1 1 238 0.007
asdl_generated gen 8 9 9 524 0.015
scoped_resource gen 27 27 27 1,362 0.020
parse gen 24 25 24 951 0.026
containers gen 6 7 6 132 0.043
files gen 5 4 5 99 0.049
tuple_return_value gen 13 16 14 247 0.053
gc_stack_roots gen 1 1 1 15 0.094
length gen 33 33 33 243 0.137
cartesian gen 71 71 69 399 0.177
escape gen 94 100 93 444 0.213
cgi gen 247 247 258 744 0.332
varargs gen 26 16 19 36 0.732
control_flow gen 134 178 135 148 0.907

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.2 4.3 11.6 0.37
asdl_generated gen 3.4 3.4 3.5 7.6 0.45
cgi gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
cartesian gen 3.5 3.4 3.4 7.7 0.46
escape gen 3.5 3.4 3.5 7.7 0.46
fib_iter gen 3.5 3.5 3.7 7.7 0.46
length gen 3.5 3.7 3.5 7.6 0.47
modules gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
fib_recursive gen 3.7 3.5 3.5 7.7 0.47
loops gen 3.7 3.7 3.5 7.7 0.47
parse gen 3.8 3.7 3.9 8.0 0.48
control_flow gen 3.7 3.8 3.8 7.6 0.48
tuple_return_value gen 3.8 3.7 3.7 7.7 0.49
files gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.6 28.5 28.3 48.1 0.60
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
gc_stack_roots gen 0 1 0 6 0.000
modules gen 0 0 0 7 0.000
parse gen 1 2 2 8 0.127
loops gen 1 0 1 9 0.140
fib_recursive gen 1 1 1 7 0.149
classes gen 3 1 1 13 0.211
tuple_return_value gen 2 1 1 9 0.222
files gen 2 3 2 8 0.240
control_flow gen 2 2 0 8 0.250
asdl_generated gen 2 1 1 7 0.284
cgi gen 2 4 3 7 0.285
fib_iter gen 3 0 1 8 0.330
containers gen 9 7 10 25 0.377
length gen 5 4 6 10 0.487
scoped_resource gen 3 4 3 6 0.504
varargs gen 17 23 20 28 0.615
escape gen 4 6 6 6 0.662
cartesian gen 4 9 6 6 0.664

raw benchmark files