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 23 0.000
fib_iter gen 8 899 0.008
modules gen 2 178 0.010
fib_recursive gen 11 876 0.012
loops gen 4 317 0.012
asdl_generated gen 7 384 0.019
parse gen 25 775 0.033
scoped_resource gen 48 1,045 0.045
files gen 7 72 0.103
tuple_return_value gen 20 188 0.107
containers gen 12 103 0.113
length gen 44 210 0.211
cartesian gen 74 328 0.227
escape gen 98 343 0.287
varargs gen 12 28 0.422
cgi gen 254 513 0.496
control_flow gen 207 109 1.892
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.6 0.42
gc_stack_roots gen 3.5 7.1 0.50
parse gen 3.8 7.6 0.50
files gen 3.7 7.1 0.52
asdl_generated gen 3.7 6.9 0.53
cartesian gen 3.7 6.9 0.53
cgi gen 3.7 6.9 0.53
escape gen 3.7 6.9 0.53
fib_iter gen 3.7 6.9 0.53
fib_recursive 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
length gen 3.8 6.9 0.55
tuple_return_value gen 3.8 6.9 0.55
control_flow gen 3.9 6.9 0.57
containers gen 28.7 47.8 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 4 0.000
control_flow gen 0 4 0.000
fib_recursive gen 0 8 0.000
files gen 0 4 0.000
gc_stack_roots gen 0 12 0.000
loops gen 0 4 0.000
modules gen 0 4 0.000
scoped_resource gen 0 8 0.000
tuple_return_value gen 0 16 0.000
containers gen 4 32 0.122
classes gen 3 8 0.424
asdl_generated gen 4 8 0.449
parse gen 4 4 0.911
escape gen 8 8 1.028
varargs gen 55 44 1.253
cartesian gen 16 4 3.920
fib_iter gen 0 0 NA
length gen 0 0 NA

raw benchmark files