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
containers gen 0 101 0.000
fib_iter gen 8 880 0.009
modules gen 2 185 0.010
fib_recursive gen 11 878 0.012
loops gen 4 286 0.013
asdl_generated gen 11 379 0.028
parse gen 29 768 0.038
scoped_resource gen 42 1,038 0.041
files gen 4 66 0.057
tuple_return_value gen 20 190 0.105
classes gen 3 22 0.144
length gen 41 205 0.201
gc_stack_roots gen 2 8 0.216
cartesian gen 85 343 0.249
escape gen 106 341 0.310
cgi gen 247 504 0.490
varargs gen 16 24 0.683
control_flow gen 200 104 1.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++ Python C++ : Python
classes gen 4.5 10.7 0.41
parse gen 3.7 7.6 0.48
gc_stack_roots gen 3.5 6.9 0.51
cgi gen 3.7 7.1 0.52
scoped_resource gen 3.7 7.1 0.52
escape gen 3.5 6.8 0.52
asdl_generated gen 3.7 6.9 0.53
fib_iter gen 3.7 6.9 0.53
tuple_return_value gen 3.7 6.9 0.53
files gen 3.8 7.1 0.54
loops gen 3.8 7.1 0.54
cartesian gen 3.7 6.8 0.54
length gen 3.8 6.9 0.55
modules gen 3.8 6.9 0.55
control_flow gen 3.9 6.9 0.57
fib_recursive gen 3.9 6.9 0.57
containers gen 28.5 47.8 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 12 0.000
classes gen 0 9 0.000
escape gen 0 12 0.000
fib_iter gen 0 8 0.000
fib_recursive gen 0 8 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
files gen 4 12 0.325
containers gen 15 32 0.475
scoped_resource gen 4 8 0.532
cartesian gen 8 12 0.680
cgi gen 8 8 0.996
control_flow gen 8 8 1.002
length gen 4 4 1.024
varargs gen 49 48 1.025
modules gen 0 0 NA

raw benchmark files