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
gc_stack_roots gen 0 8 0.000
fib_iter gen 8 885 0.008
modules gen 2 193 0.009
fib_recursive gen 11 875 0.012
loops gen 4 289 0.012
asdl_generated gen 7 387 0.019
containers gen 4 108 0.036
parse gen 29 764 0.038
scoped_resource gen 42 1,028 0.041
files gen 4 72 0.051
tuple_return_value gen 20 188 0.107
classes gen 3 24 0.133
length gen 44 200 0.220
cartesian gen 79 331 0.238
escape gen 93 350 0.266
cgi gen 264 507 0.521
varargs gen 12 8 1.557
control_flow gen 209 107 1.959

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.5 10.7 0.41
gc_stack_roots gen 3.4 7.1 0.48
scoped_resource gen 3.5 7.1 0.50
parse gen 3.9 7.7 0.51
cartesian gen 3.5 6.9 0.51
files gen 3.5 6.9 0.51
loops gen 3.7 7.1 0.52
escape gen 3.5 6.8 0.52
fib_iter 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
cgi gen 3.7 6.8 0.54
control_flow gen 3.8 6.9 0.55
length gen 3.8 6.9 0.55
asdl_generated gen 3.7 6.7 0.55
fib_recursive gen 3.8 6.8 0.56
containers gen 28.5 47.7 0.60
varargs gen 5.6 6.9 0.81

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
classes gen 0 8 0.000
control_flow gen 0 8 0.000
fib_iter gen 0 12 0.000
fib_recursive gen 0 12 0.000
length gen 0 8 0.000
loops gen 0 12 0.000
parse gen 0 12 0.000
tuple_return_value gen 0 8 0.000
cgi gen 4 12 0.334
containers gen 12 28 0.415
gc_stack_roots gen 2 4 0.428
asdl_generated gen 4 8 0.453
varargs gen 54 64 0.843
files gen 4 4 0.913
scoped_resource gen 4 4 1.061
cartesian gen 12 8 1.481
escape gen 12 4 2.894
modules gen 0 0 NA

raw benchmark files