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 18 0.000
gc_stack_roots gen 0 4 0.000
modules gen 0 171 0.000
fib_iter gen 4 887 0.005
fib_recursive gen 11 897 0.012
loops gen 4 292 0.012
asdl_generated gen 11 381 0.028
parse gen 29 767 0.038
scoped_resource gen 39 1,020 0.038
files gen 4 72 0.052
containers gen 8 116 0.070
tuple_return_value gen 16 181 0.089
length gen 40 205 0.197
cartesian gen 90 320 0.279
escape gen 103 352 0.294
cgi gen 250 538 0.465
control_flow gen 205 140 1.456
varargs gen 31 12 2.619

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.6 10.7 0.43
escape gen 3.5 6.9 0.51
fib_iter gen 3.5 6.9 0.51
parse gen 3.9 7.6 0.52
asdl_generated gen 3.7 7.1 0.52
cartesian gen 3.7 7.1 0.52
cgi gen 3.7 7.1 0.52
scoped_resource gen 3.7 7.1 0.52
gc_stack_roots gen 3.5 6.8 0.52
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
length gen 3.8 6.9 0.55
modules gen 3.8 6.9 0.55
tuple_return_value gen 3.8 6.9 0.55
containers gen 28.6 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
cartesian gen 0 12 0.000
fib_recursive gen 0 16 0.000
loops gen 0 8 0.000
parse gen 0 8 0.000
modules gen 2 12 0.154
gc_stack_roots gen 2 8 0.228
classes gen 3 13 0.244
tuple_return_value gen 4 12 0.341
containers gen 8 20 0.407
cgi gen 4 8 0.498
fib_iter gen 4 8 0.506
varargs gen 35 60 0.589
scoped_resource gen 8 12 0.647
files gen 4 4 0.928
control_flow gen 4 4 1.000
length gen 4 4 1.002
escape gen 4 0 inf
asdl_generated gen 0 0 NA

raw benchmark files