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 1 1 235 0.000
loops gen 1 2 1 365 0.002
fib_recursive gen 4 5 5 1,083 0.004
fib_iter gen 7 6 7 1,077 0.007
asdl_generated gen 8 8 9 516 0.015
scoped_resource gen 26 28 30 1,368 0.019
parse gen 21 25 25 947 0.023
classes gen 1 2 2 34 0.027
containers gen 6 7 5 131 0.045
files gen 5 4 6 96 0.050
tuple_return_value gen 14 15 14 245 0.057
gc_stack_roots gen 1 1 1 12 0.120
cartesian gen 66 72 69 435 0.153
length gen 37 33 33 239 0.154
escape gen 93 97 96 422 0.220
cgi gen 256 245 257 726 0.352
varargs gen 19 18 20 28 0.676
control_flow gen 136 177 137 151 0.901

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
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.5 3.5 3.4 7.7 0.46
fib_recursive gen 3.5 3.7 3.5 7.7 0.46
modules gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.7 3.7 3.8 8.0 0.46
asdl_generated gen 3.5 3.3 3.4 7.6 0.47
cartesian gen 3.5 3.5 3.4 7.6 0.47
escape gen 3.5 3.4 3.7 7.6 0.47
fib_iter gen 3.5 3.5 3.7 7.6 0.47
loops gen 3.5 3.4 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
tuple_return_value gen 3.7 3.8 3.7 7.7 0.47
length gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.6 0.50
files gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.7 28.5 48.4 0.59
varargs gen 5.5 5.2 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 1 0 5 0.000
gc_stack_roots gen 0 1 0 9 0.000
tuple_return_value gen 1 2 1 11 0.091
classes gen 2 1 1 11 0.165
asdl_generated gen 2 2 1 12 0.166
files gen 2 3 1 11 0.175
length gen 2 4 6 11 0.181
modules gen 1 0 0 8 0.182
control_flow gen 1 2 1 5 0.199
fib_recursive gen 2 1 1 9 0.199
loops gen 2 1 2 8 0.217
parse gen 4 2 1 13 0.313
containers gen 8 7 9 23 0.343
cgi gen 3 5 4 8 0.376
escape gen 6 8 3 12 0.499
scoped_resource gen 5 3 0 9 0.546
varargs gen 19 20 19 29 0.653
cartesian gen 9 8 6 7 1.275

raw benchmark files