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 4 890 0.004
modules gen 2 176 0.011
fib_recursive gen 11 884 0.012
loops gen 4 291 0.013
asdl_generated gen 11 426 0.026
parse gen 21 775 0.027
containers gen 4 123 0.031
scoped_resource gen 43 1,030 0.042
files gen 4 72 0.052
tuple_return_value gen 16 187 0.086
classes gen 3 22 0.147
length gen 34 206 0.164
gc_stack_roots gen 2 8 0.207
cartesian gen 88 339 0.260
escape gen 107 352 0.304
cgi gen 269 519 0.518
control_flow gen 208 111 1.870
varargs gen 31 8 3.937

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.8 0.41
parse gen 3.8 7.7 0.49
asdl_generated gen 3.5 6.9 0.51
gc_stack_roots gen 3.5 6.9 0.51
escape gen 3.7 7.1 0.52
scoped_resource gen 3.7 7.1 0.52
length gen 3.7 6.9 0.53
fib_iter gen 3.8 7.1 0.54
loops gen 3.8 7.1 0.54
tuple_return_value gen 3.8 7.1 0.54
cartesian gen 3.7 6.8 0.54
cgi gen 3.7 6.8 0.54
control_flow gen 3.8 6.9 0.55
fib_recursive gen 3.8 6.9 0.55
files gen 3.8 6.9 0.55
modules gen 3.8 6.9 0.55
containers gen 28.7 47.7 0.60
varargs gen 5.5 6.9 0.79

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
cgi gen 0 12 0.000
classes gen 0 9 0.000
control_flow gen 0 4 0.000
fib_recursive gen 0 12 0.000
gc_stack_roots gen 0 4 0.000
loops gen 0 4 0.000
modules gen 0 8 0.000
fib_iter gen 4 8 0.490
scoped_resource gen 4 8 0.493
varargs gen 35 64 0.554
files gen 4 4 0.930
containers gen 12 12 0.966
cartesian gen 4 4 1.005
tuple_return_value gen 4 4 1.015
parse gen 8 8 1.043
length gen 11 8 1.418
asdl_generated gen 0 0 NA
escape gen 0 0 NA

raw benchmark files