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 4 0.000
fib_recursive gen 7 877 0.008
fib_iter gen 8 891 0.009
modules gen 2 178 0.011
loops gen 4 291 0.013
asdl_generated gen 11 371 0.029
parse gen 25 778 0.033
scoped_resource gen 43 1,046 0.041
files gen 4 71 0.052
containers gen 10 111 0.093
tuple_return_value gen 20 187 0.107
classes gen 4 27 0.139
length gen 37 202 0.184
cartesian gen 82 329 0.249
escape gen 91 344 0.264
cgi gen 260 525 0.495
varargs gen 24 28 0.839
control_flow gen 209 110 1.903

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 6.9 0.49
asdl_generated gen 3.5 7.1 0.50
parse gen 3.8 7.6 0.50
modules 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
length gen 3.8 7.1 0.54
loops gen 3.8 7.1 0.54
scoped_resource gen 3.8 7.1 0.54
control_flow gen 3.8 6.9 0.55
fib_iter gen 3.8 6.9 0.55
fib_recursive gen 3.8 6.9 0.55
files gen 3.8 6.9 0.55
tuple_return_value gen 3.8 6.9 0.55
containers gen 28.5 47.8 0.60
varargs gen 5.6 6.8 0.83

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
asdl_generated gen 0 8 0.000
classes gen 0 4 0.000
control_flow gen 0 4 0.000
fib_iter gen 0 8 0.000
loops gen 0 8 0.000
modules gen 0 4 0.000
tuple_return_value gen 0 8 0.000
containers gen 5 24 0.218
gc_stack_roots gen 2 8 0.228
fib_recursive gen 4 8 0.444
parse gen 4 8 0.454
files gen 4 4 0.933
varargs gen 43 44 0.979
length gen 7 4 1.880
cartesian gen 8 4 2.044
escape gen 17 8 2.066
cgi gen 8 0 inf
scoped_resource gen 4 0 inf

raw benchmark files