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 8 894 0.008
modules gen 2 181 0.010
loops gen 4 302 0.012
fib_recursive gen 11 896 0.012
asdl_generated gen 11 374 0.029
parse gen 29 773 0.038
scoped_resource gen 43 1,043 0.042
files gen 8 81 0.093
tuple_return_value gen 20 195 0.103
containers gen 15 124 0.123
length gen 40 202 0.199
classes gen 3 15 0.207
cartesian gen 87 330 0.263
escape gen 106 348 0.306
varargs gen 12 32 0.370
cgi gen 265 513 0.516
control_flow gen 212 107 1.978
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.8 0.41
gc_stack_roots gen 3.4 7.1 0.48
parse gen 3.8 7.6 0.50
cartesian gen 3.5 6.9 0.51
escape gen 3.5 6.9 0.51
scoped_resource gen 3.5 6.9 0.51
asdl_generated gen 3.7 6.9 0.53
fib_iter gen 3.7 6.9 0.53
control_flow gen 3.8 7.1 0.54
fib_recursive gen 3.8 7.1 0.54
files gen 3.8 7.1 0.54
loops gen 3.8 7.1 0.54
modules gen 3.8 7.1 0.54
tuple_return_value gen 3.8 7.1 0.54
cgi gen 3.8 6.9 0.55
length gen 3.8 6.9 0.55
containers gen 28.6 47.8 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 8 0.000
classes gen 0 15 0.000
containers gen 0 12 0.000
control_flow gen 0 8 0.000
escape gen 0 4 0.000
fib_iter gen 0 8 0.000
fib_recursive gen 0 4 0.000
files gen 0 8 0.000
gc_stack_roots gen 0 12 0.000
modules gen 0 4 0.000
parse gen 0 4 0.000
tuple_return_value gen 0 4 0.000
length gen 4 12 0.338
cgi gen 4 8 0.493
scoped_resource gen 4 8 0.494
cartesian gen 4 4 0.994
varargs gen 55 40 1.381
loops gen 0 0 NA

raw benchmark files