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
loops gen 1 3 1 357 0.002
fib_recursive gen 5 5 4 1,123 0.005
modules gen 1 0 1 237 0.006
fib_iter gen 6 6 7 964 0.006
asdl_generated gen 8 9 10 521 0.015
scoped_resource gen 25 28 29 1,371 0.018
parse gen 22 26 24 957 0.022
gc_stack_roots gen 1 1 0 13 0.052
containers gen 7 9 6 135 0.052
classes gen 2 0 1 34 0.054
tuple_return_value gen 14 16 15 249 0.056
files gen 6 6 5 101 0.058
length gen 34 36 36 233 0.146
cartesian gen 69 76 65 392 0.176
escape gen 90 98 94 477 0.189
cgi gen 257 252 258 738 0.348
varargs gen 24 16 18 28 0.864
control_flow gen 134 180 133 149 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.5 4.5 11.5 0.38
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.4 7.6 0.45
loops gen 3.5 3.7 3.7 7.7 0.46
modules gen 3.5 3.5 3.7 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
cgi gen 3.5 3.4 3.5 7.6 0.47
fib_iter gen 3.5 3.7 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
length gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.8 3.9 3.7 8.0 0.48
control_flow gen 3.7 3.8 3.8 7.6 0.48
files gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.4 28.5 48.2 0.59
varargs gen 5.5 5.6 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
modules gen 0 1 0 7 0.000
gc_stack_roots gen 1 0 1 7 0.096
fib_iter gen 1 1 0 10 0.101
classes gen 1 3 2 9 0.102
tuple_return_value gen 1 1 0 9 0.111
fib_recursive gen 1 1 2 8 0.130
files gen 1 1 2 7 0.140
control_flow gen 1 3 3 7 0.143
loops gen 2 0 2 7 0.246
asdl_generated gen 2 1 0 8 0.249
parse gen 4 1 2 10 0.392
containers gen 7 5 9 18 0.393
length gen 4 1 3 10 0.401
varargs gen 14 22 21 32 0.441
cartesian gen 4 4 10 9 0.444
cgi gen 4 2 2 6 0.665
escape gen 8 7 5 6 1.335
scoped_resource gen 5 4 1 3 1.663

raw benchmark files