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 1 2 307 0.004
modules gen 1 1 1 216 0.005
fib_recursive gen 5 5 5 1,001 0.005
fib_iter gen 6 6 6 738 0.009
asdl_generated gen 8 10 10 509 0.017
scoped_resource gen 28 31 26 1,234 0.022
parse gen 22 26 24 904 0.024
containers gen 5 3 3 121 0.044
classes gen 2 2 1 30 0.051
tuple_return_value gen 12 15 12 216 0.057
files gen 5 6 6 91 0.058
gc_stack_roots gen 1 0 0 13 0.088
length gen 28 30 28 222 0.127
cartesian gen 66 71 66 356 0.185
escape gen 86 92 81 385 0.224
cgi gen 186 175 187 669 0.279
varargs gen 12 11 17 26 0.461
control_flow gen 125 169 125 137 0.912

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
cgi gen 0 3 0 6 0.000
escape gen 0 3 4 5 0.000
fib_iter gen 0 0 0 8 0.000
fib_recursive gen 0 1 1 2 0.000
gc_stack_roots gen 0 1 1 4 0.000
modules gen 0 0 0 4 0.000
classes gen 1 0 2 8 0.096
loops gen 1 1 0 8 0.138
control_flow gen 1 1 0 5 0.200
tuple_return_value gen 2 2 2 8 0.239
asdl_generated gen 1 0 0 4 0.264
parse gen 2 0 0 6 0.334
files gen 1 0 0 2 0.526
length gen 4 3 5 7 0.579
containers gen 7 10 10 12 0.616
scoped_resource gen 2 1 4 3 0.680
cartesian gen 3 4 3 3 1.012
varargs gen 12 13 7 10 1.198

raw benchmark files