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 11 0.000
fib_iter gen 8 895 0.008
modules gen 2 178 0.010
fib_recursive gen 11 873 0.012
loops gen 5 296 0.017
asdl_generated gen 11 386 0.028
parse gen 25 767 0.033
scoped_resource gen 43 1,047 0.041
files gen 4 72 0.052
tuple_return_value gen 20 188 0.107
containers gen 12 108 0.107
length gen 40 210 0.191
cartesian gen 87 328 0.265
escape gen 103 348 0.295
cgi gen 270 504 0.535
varargs gen 19 16 1.218
control_flow gen 206 104 1.988
gc_stack_roots gen 2 0 inf

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
cgi gen 3.5 7.1 0.50
asdl_generated gen 3.5 6.9 0.51
files gen 3.5 6.9 0.51
gc_stack_roots gen 3.5 6.9 0.51
parse gen 3.9 7.6 0.52
fib_recursive gen 3.7 7.1 0.52
cartesian gen 3.7 6.9 0.53
escape 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
length gen 3.7 6.8 0.54
control_flow gen 3.8 6.9 0.55
modules gen 3.8 6.9 0.55
scoped_resource gen 3.8 6.9 0.55
fib_iter gen 3.7 6.7 0.55
containers gen 28.5 47.7 0.60
varargs gen 5.4 6.9 0.77

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
asdl_generated gen 0 4 0.000
cgi gen 0 16 0.000
control_flow gen 0 8 0.000
fib_iter gen 0 4 0.000
fib_recursive gen 0 12 0.000
gc_stack_roots gen 0 12 0.000
loops gen 0 4 0.000
modules gen 0 4 0.000
tuple_return_value gen 0 4 0.000
containers gen 4 28 0.137
classes gen 3 19 0.167
cartesian gen 4 8 0.494
escape gen 4 8 0.514
varargs gen 47 56 0.835
files gen 4 4 0.930
scoped_resource gen 4 4 0.975
parse gen 4 4 1.044
length gen 4 0 inf

raw benchmark files