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
modules gen 0 181 0.000
fib_iter gen 4 888 0.004
fib_recursive gen 7 882 0.008
loops gen 4 302 0.012
asdl_generated gen 11 384 0.028
parse gen 25 789 0.032
scoped_resource gen 43 1,041 0.041
containers gen 8 98 0.080
tuple_return_value gen 20 189 0.107
files gen 8 71 0.109
classes gen 3 22 0.147
length gen 40 199 0.202
cartesian gen 84 331 0.253
escape gen 105 341 0.309
varargs gen 4 12 0.342
gc_stack_roots gen 2 4 0.447
cgi gen 268 516 0.520
control_flow gen 208 105 1.970

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.3 10.7 0.40
gc_stack_roots gen 3.4 6.9 0.49
parse gen 3.8 7.5 0.51
asdl_generated gen 3.5 6.9 0.51
cartesian gen 3.5 6.9 0.51
cgi gen 3.7 7.1 0.52
fib_iter gen 3.7 7.1 0.52
fib_recursive gen 3.7 7.1 0.52
scoped_resource gen 3.7 7.1 0.52
escape gen 3.7 6.9 0.53
length gen 3.7 6.9 0.53
loops gen 3.8 7.1 0.54
files gen 3.7 6.8 0.54
modules gen 3.8 6.9 0.55
tuple_return_value gen 3.9 7.1 0.56
control_flow gen 3.9 6.9 0.57
containers gen 28.5 47.7 0.60
varargs gen 5.4 7.1 0.76

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
cgi gen 0 4 0.000
classes gen 0 9 0.000
escape gen 0 12 0.000
files gen 0 4 0.000
gc_stack_roots gen 0 8 0.000
loops gen 0 4 0.000
tuple_return_value gen 0 4 0.000
containers gen 8 35 0.221
fib_recursive gen 4 8 0.445
fib_iter gen 4 8 0.472
scoped_resource gen 4 8 0.487
control_flow gen 4 8 0.492
length gen 4 8 0.505
varargs gen 62 60 1.027
cartesian gen 8 4 1.998
modules gen 2 0 inf
parse gen 4 0 inf
asdl_generated gen 0 0 NA

raw benchmark files