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 1 2 31 0.000
modules gen 0 0 0 272 0.000
loops gen 1 2 1 361 0.002
fib_recursive gen 5 5 4 1,113 0.005
fib_iter gen 6 7 6 984 0.006
asdl_generated gen 9 7 8 521 0.017
scoped_resource gen 25 31 27 1,353 0.019
parse gen 20 24 25 950 0.021
files gen 5 5 6 102 0.047
tuple_return_value gen 13 14 14 247 0.053
containers gen 7 5 3 122 0.060
gc_stack_roots gen 1 0 0 11 0.061
length gen 34 34 33 242 0.140
cartesian gen 63 72 69 397 0.158
escape gen 86 102 94 434 0.199
cgi gen 255 252 255 743 0.344
control_flow gen 135 183 135 146 0.927
varargs gen 21 14 9 20 1.058

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.5 4.3 11.5 0.38
gc_stack_roots gen 3.3 3.4 3.4 7.6 0.43
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cartesian gen 3.4 3.5 3.5 7.6 0.45
cgi gen 3.5 3.4 3.5 7.7 0.46
fib_recursive gen 3.5 3.5 3.7 7.7 0.46
length gen 3.5 3.5 3.7 7.7 0.46
loops gen 3.5 3.4 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
control_flow gen 3.7 3.7 3.7 7.7 0.47
files gen 3.7 3.7 3.7 7.7 0.47
modules gen 3.7 3.7 3.5 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.47
fib_iter gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
containers gen 28.4 28.7 28.7 48.1 0.59
varargs gen 5.5 5.5 5.4 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 1 1 7 0.000
gc_stack_roots gen 1 1 1 9 0.075
fib_iter gen 1 0 1 13 0.078
fib_recursive gen 1 1 2 8 0.129
modules gen 1 1 1 9 0.159
loops gen 2 1 2 9 0.186
asdl_generated gen 1 3 2 5 0.199
tuple_return_value gen 2 3 1 10 0.201
containers gen 6 9 10 29 0.215
classes gen 3 2 1 12 0.226
files gen 2 2 1 7 0.274
varargs gen 17 24 29 36 0.476
parse gen 5 3 1 9 0.563
length gen 5 2 6 8 0.621
cgi gen 5 0 5 7 0.715
scoped_resource gen 5 1 4 7 0.722
cartesian gen 10 8 6 10 0.998
escape gen 11 3 5 8 1.364

raw benchmark files