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
classes gen 0 23 0.000
fib_iter gen 4 885 0.004
modules gen 2 183 0.010
fib_recursive gen 11 881 0.012
loops gen 4 292 0.013
asdl_generated gen 7 375 0.019
parse gen 30 770 0.038
scoped_resource gen 42 1,043 0.041
files gen 4 80 0.046
tuple_return_value gen 20 191 0.105
containers gen 12 103 0.113
length gen 41 205 0.201
gc_stack_roots gen 2 8 0.224
cartesian gen 91 350 0.261
escape gen 108 345 0.312
varargs gen 12 32 0.368
cgi gen 265 507 0.523
control_flow gen 209 108 1.946

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
scoped_resource gen 3.5 7.1 0.50
asdl_generated gen 3.5 6.9 0.51
cartesian gen 3.5 6.9 0.51
escape gen 3.5 6.9 0.51
parse gen 3.9 7.6 0.52
files gen 3.7 7.1 0.52
cgi gen 3.7 6.9 0.53
fib_recursive gen 3.7 6.9 0.53
gc_stack_roots gen 3.7 6.9 0.53
tuple_return_value gen 3.7 6.9 0.53
loops gen 3.8 7.1 0.54
fib_iter gen 3.8 6.9 0.55
length gen 3.8 6.9 0.55
modules gen 3.8 6.9 0.55
control_flow gen 3.8 6.8 0.56
containers gen 28.4 47.8 0.59
varargs gen 5.6 6.9 0.81

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
cartesian gen 0 8 0.000
control_flow gen 0 8 0.000
escape gen 0 8 0.000
fib_recursive gen 0 4 0.000
gc_stack_roots gen 0 4 0.000
loops gen 0 12 0.000
parse gen 0 8 0.000
tuple_return_value gen 0 4 0.000
containers gen 4 32 0.122
classes gen 3 8 0.421
asdl_generated gen 4 8 0.456
files gen 4 8 0.460
cgi gen 4 8 0.503
length gen 4 8 0.512
scoped_resource gen 4 8 0.530
fib_iter gen 4 4 0.949
varargs gen 55 40 1.373
modules gen 0 0 NA

raw benchmark files