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 1 0 11 0.000
modules gen 0 1 1 234 0.000
loops gen 1 2 1 352 0.002
fib_recursive gen 6 4 4 1,108 0.006
fib_iter gen 7 7 7 952 0.007
asdl_generated gen 9 8 7 526 0.017
scoped_resource gen 27 29 27 1,356 0.020
parse gen 22 26 23 947 0.023
tuple_return_value gen 13 16 13 251 0.052
containers gen 7 7 5 127 0.055
files gen 7 7 6 102 0.067
classes gen 3 3 3 34 0.080
length gen 36 32 34 237 0.152
cartesian gen 74 72 68 399 0.186
escape gen 94 98 95 437 0.215
cgi gen 256 251 258 780 0.328
varargs gen 22 16 21 29 0.771
control_flow gen 136 177 133 147 0.927

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.5 4.5 4.3 11.5 0.39
cartesian gen 3.4 3.5 3.5 7.7 0.44
cgi gen 3.4 3.5 3.4 7.6 0.45
scoped_resource gen 3.4 3.5 3.5 7.6 0.45
asdl_generated gen 3.5 3.4 3.4 7.7 0.46
loops gen 3.5 3.5 3.7 7.7 0.46
modules gen 3.5 3.5 3.7 7.7 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.5 7.6 0.47
gc_stack_roots gen 3.5 3.4 3.4 7.6 0.47
tuple_return_value gen 3.7 3.8 3.7 7.7 0.47
parse gen 3.8 3.7 3.9 8.0 0.47
files gen 3.7 3.7 3.7 7.6 0.48
length gen 3.7 3.5 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.4 28.3 28.3 48.2 0.59
varargs gen 5.5 5.5 5.6 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 0 0 11 0.000
control_flow gen 0 2 2 7 0.000
fib_iter gen 0 0 0 6 0.000
fib_recursive gen 0 2 2 8 0.000
files gen 0 0 1 7 0.000
cartesian gen 1 8 8 10 0.100
asdl_generated gen 1 2 3 9 0.112
modules gen 1 0 0 12 0.120
gc_stack_roots gen 1 1 1 10 0.136
loops gen 2 1 2 9 0.190
cgi gen 3 2 4 15 0.200
length gen 3 4 5 13 0.231
containers gen 7 7 9 26 0.266
parse gen 4 1 2 12 0.328
tuple_return_value gen 2 1 2 6 0.334
scoped_resource gen 4 4 4 7 0.566
varargs gen 16 22 18 28 0.581
escape gen 5 7 6 5 1.009

raw benchmark files