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
gc_stack_roots gen 0 0 1 15 0.000
modules gen 0 1 0 229 0.000
fib_recursive gen 5 6 6 1,124 0.005
loops gen 2 3 2 354 0.005
fib_iter gen 6 6 6 943 0.007
asdl_generated gen 7 8 6 512 0.014
scoped_resource gen 27 28 26 1,410 0.019
parse gen 22 24 21 941 0.024
classes gen 1 3 0 33 0.027
containers gen 5 5 3 123 0.040
files gen 6 6 4 95 0.061
tuple_return_value gen 15 15 12 245 0.063
length gen 32 33 34 238 0.133
cartesian gen 73 74 72 388 0.189
escape gen 94 99 96 429 0.219
cgi gen 256 248 258 739 0.346
varargs gen 23 8 12 29 0.809
control_flow gen 136 175 139 145 0.936

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.5 11.6 0.37
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.4 3.5 3.5 7.6 0.45
cartesian gen 3.5 3.5 3.4 7.7 0.46
escape gen 3.5 3.5 3.4 7.7 0.46
fib_iter gen 3.5 3.7 3.7 7.7 0.46
fib_recursive gen 3.5 3.5 3.7 7.7 0.46
modules gen 3.5 3.5 3.4 7.7 0.46
loops gen 3.5 3.8 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
length gen 3.7 3.7 3.7 7.7 0.47
tuple_return_value gen 3.7 3.8 3.7 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.47
files gen 3.8 3.8 3.7 7.7 0.49
control_flow gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.4 28.3 48.2 0.59
varargs gen 5.5 5.6 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 3 2 8 0.000
tuple_return_value gen 0 2 3 9 0.000
files gen 1 1 3 11 0.088
loops gen 1 0 1 8 0.103
fib_iter gen 1 1 1 7 0.146
classes gen 2 0 3 11 0.159
modules gen 1 0 1 8 0.171
fib_recursive gen 1 0 0 6 0.174
cartesian gen 2 6 3 10 0.201
gc_stack_roots gen 1 1 0 5 0.275
parse gen 3 3 4 11 0.278
containers gen 9 9 11 29 0.305
asdl_generated gen 3 2 4 9 0.329
escape gen 4 5 2 11 0.364
scoped_resource gen 3 3 4 6 0.497
varargs gen 15 30 26 29 0.528
cgi gen 4 3 2 6 0.666
length gen 7 3 4 6 1.152

raw benchmark files