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 13 0.000
loops gen 0 286 0.000
fib_iter gen 4 894 0.004
fib_recursive gen 7 879 0.008
modules gen 2 172 0.010
asdl_generated gen 7 382 0.019
parse gen 23 780 0.030
scoped_resource gen 33 1,051 0.032
containers gen 7 118 0.058
tuple_return_value gen 19 196 0.097
files gen 7 68 0.110
gc_stack_roots gen 2 8 0.215
length gen 45 199 0.225
cartesian gen 84 324 0.259
escape gen 107 339 0.317
cgi gen 274 514 0.534
control_flow gen 157 109 1.432
varargs gen 28 16 1.783

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
asdl_generated gen 3.5 7.1 0.50
cartesian gen 3.5 7.1 0.50
gc_stack_roots gen 3.4 6.8 0.50
parse gen 3.8 7.6 0.50
scoped_resource gen 3.5 7.1 0.50
cgi gen 3.5 6.9 0.51
escape gen 3.7 6.9 0.53
control_flow gen 3.8 7.1 0.54
length gen 3.8 7.1 0.54
loops gen 3.8 7.1 0.54
modules gen 3.7 6.8 0.54
fib_iter gen 3.8 6.9 0.55
fib_recursive gen 3.8 6.9 0.55
files gen 3.8 6.9 0.55
tuple_return_value gen 3.8 6.9 0.55
containers gen 28.5 47.8 0.59
varargs gen 5.6 6.9 0.81

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
escape gen 0 12 0.000
files gen 0 8 0.000
gc_stack_roots gen 0 4 0.000
length gen 0 8 0.000
modules gen 0 12 0.000
tuple_return_value gen 0 8 0.000
classes gen 3 17 0.180
loops gen 4 12 0.298
containers gen 7 16 0.438
fib_recursive gen 4 8 0.449
cartesian gen 4 8 0.500
varargs gen 36 55 0.655
asdl_generated gen 4 4 0.881
fib_iter gen 4 4 0.936
cgi gen 4 4 0.990
control_flow gen 4 4 1.028
scoped_resource gen 11 4 2.766
parse gen 4 0 inf

raw benchmark files