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
loops gen 0 322 0.000
fib_iter gen 8 891 0.008
modules gen 2 173 0.010
fib_recursive gen 11 878 0.012
asdl_generated gen 11 373 0.029
parse gen 29 792 0.037
scoped_resource gen 40 1,061 0.037
tuple_return_value gen 12 188 0.064
containers gen 10 120 0.085
files gen 7 64 0.118
classes gen 3 19 0.166
length gen 45 197 0.228
cartesian gen 83 333 0.248
gc_stack_roots gen 2 6 0.283
escape gen 106 349 0.303
cgi gen 279 509 0.548
varargs gen 27 20 1.358
control_flow gen 209 110 1.907

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
gc_stack_roots gen 3.4 6.9 0.49
parse gen 3.8 7.7 0.49
cgi gen 3.5 6.9 0.51
scoped_resource gen 3.7 7.1 0.52
asdl_generated gen 3.5 6.8 0.52
fib_iter gen 3.7 6.9 0.53
fib_recursive gen 3.7 6.9 0.53
tuple_return_value gen 3.7 6.9 0.53
length gen 3.8 7.1 0.54
loops gen 3.8 7.1 0.54
cartesian gen 3.8 6.9 0.55
escape gen 3.8 6.9 0.55
files gen 3.8 6.9 0.55
modules gen 3.8 6.9 0.55
control_flow gen 3.9 7.1 0.56
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
asdl_generated gen 0 8 0.000
cgi gen 0 4 0.000
classes gen 0 11 0.000
control_flow gen 0 4 0.000
escape gen 0 8 0.000
fib_iter gen 0 4 0.000
files gen 0 12 0.000
gc_stack_roots gen 0 6 0.000
length gen 0 8 0.000
modules gen 0 8 0.000
containers gen 5 16 0.319
loops gen 4 8 0.461
varargs gen 39 52 0.746
cartesian gen 8 4 1.961
tuple_return_value gen 8 4 2.007
scoped_resource gen 8 0 inf
fib_recursive gen 0 0 NA
parse gen 0 0 NA

raw benchmark files