mycpp Code Generation

Measure the speedup from mycpp, and the resource usage.

Source code: oil/mycpp/examples

User Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
fib_iter gen 8 893 0.008
modules gen 2 169 0.011
fib_recursive gen 11 899 0.012
loops gen 4 288 0.013
asdl_generated gen 11 370 0.029
parse gen 25 762 0.033
scoped_resource gen 47 1,026 0.046
containers gen 8 108 0.072
tuple_return_value gen 16 187 0.087
files gen 8 67 0.114
classes gen 3 22 0.144
length gen 40 215 0.188
cartesian gen 87 326 0.266
escape gen 105 346 0.303
gc_stack_roots gen 2 4 0.442
cgi gen 265 517 0.512
varargs gen 19 16 1.228
control_flow gen 209 106 1.963

Max Resident Set Size (MB)

Lower ratios are better. We use MB (powers of 10), not MiB (powers of 2).

example name gen C++ Python C++ : Python
classes gen 4.3 10.7 0.40
asdl_generated gen 3.5 7.1 0.50
parse gen 3.8 7.6 0.50
fib_iter gen 3.5 6.9 0.51
gc_stack_roots gen 3.5 6.9 0.51
scoped_resource gen 3.7 7.1 0.52
cartesian gen 3.7 6.9 0.53
cgi gen 3.7 6.9 0.53
escape gen 3.7 6.9 0.53
fib_recursive gen 3.7 6.9 0.53
modules gen 3.7 6.9 0.53
tuple_return_value gen 3.7 6.9 0.53
control_flow gen 3.8 6.9 0.55
length gen 3.8 6.9 0.55
loops gen 3.8 6.9 0.55
files gen 3.9 6.9 0.57
containers gen 28.5 48.0 0.59
varargs gen 5.5 6.9 0.79

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
asdl_generated gen 0 8 0.000
classes gen 0 9 0.000
control_flow gen 0 8 0.000
escape gen 0 8 0.000
fib_iter gen 0 8 0.000
fib_recursive gen 0 8 0.000
files gen 0 8 0.000
gc_stack_roots gen 0 8 0.000
loops gen 0 12 0.000
modules gen 0 12 0.000
scoped_resource gen 0 8 0.000
containers gen 8 28 0.276
cartesian gen 4 12 0.331
parse gen 4 12 0.346
varargs gen 47 56 0.842
length gen 4 4 0.999
cgi gen 4 4 1.001
tuple_return_value gen 4 4 1.027

raw benchmark files