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
loops gen 0 291 0.000
fib_iter gen 8 895 0.008
modules gen 2 171 0.010
fib_recursive gen 11 890 0.012
asdl_generated gen 11 370 0.031
scoped_resource gen 36 1,020 0.035
containers gen 4 109 0.036
parse gen 29 772 0.038
files gen 7 71 0.105
classes gen 3 31 0.105
tuple_return_value gen 20 188 0.107
length gen 36 202 0.180
cartesian gen 91 335 0.271
escape gen 106 348 0.304
gc_stack_roots gen 2 4 0.488
cgi gen 264 517 0.510
varargs gen 12 16 0.734
control_flow gen 209 111 1.881

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.6 0.42
gc_stack_roots gen 3.4 7.1 0.48
cartesian gen 3.5 7.1 0.50
parse gen 3.8 7.6 0.50
escape gen 3.7 7.1 0.52
cgi gen 3.7 6.9 0.53
length gen 3.7 6.9 0.53
modules gen 3.7 6.9 0.53
loops gen 3.8 7.1 0.54
scoped_resource gen 3.8 7.1 0.54
asdl_generated 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
control_flow gen 3.9 6.8 0.58
containers gen 28.5 47.8 0.59
varargs gen 5.6 6.7 0.84

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
asdl_generated gen 0 8 0.000
control_flow gen 0 4 0.000
escape gen 0 4 0.000
fib_iter gen 0 4 0.000
files gen 0 4 0.000
gc_stack_roots gen 0 8 0.000
modules gen 0 12 0.000
parse gen 0 8 0.000
tuple_return_value gen 0 4 0.000
loops gen 4 12 0.306
containers gen 12 27 0.430
scoped_resource gen 12 24 0.493
varargs gen 55 56 0.979
length gen 8 4 2.001
cgi gen 4 0 inf
cartesian gen 0 0 NA
classes gen 0 0 NA
fib_recursive gen 0 0 NA

raw benchmark files