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 305 0.000
modules gen 0 170 0.000
fib_recursive gen 7 886 0.008
fib_iter gen 9 896 0.010
asdl_generated gen 8 376 0.020
parse gen 26 763 0.033
scoped_resource gen 47 1,071 0.044
files gen 4 72 0.059
tuple_return_value gen 14 186 0.074
containers gen 15 107 0.144
classes gen 3 23 0.144
length gen 41 202 0.205
cartesian gen 88 326 0.269
escape gen 99 364 0.271
gc_stack_roots gen 2 4 0.443
cgi gen 269 509 0.529
varargs gen 12 16 0.729
control_flow gen 206 110 1.872

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.5 0.42
gc_stack_roots gen 3.4 6.9 0.49
asdl_generated gen 3.5 7.1 0.50
escape gen 3.5 7.1 0.50
cartesian gen 3.5 6.9 0.51
parse gen 3.8 7.3 0.52
length gen 3.7 7.1 0.52
loops gen 3.7 7.1 0.52
scoped_resource gen 3.7 7.1 0.52
cgi gen 3.7 6.9 0.53
modules gen 3.8 7.1 0.54
control_flow gen 3.8 6.9 0.55
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.8 0.56
containers gen 28.5 47.8 0.59
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
classes gen 0 8 0.000
containers gen 0 28 0.000
control_flow gen 0 8 0.000
gc_stack_roots gen 0 8 0.000
scoped_resource gen 0 8 0.000
modules gen 2 12 0.152
parse gen 4 12 0.353
fib_recursive gen 4 8 0.447
cartesian gen 4 8 0.496
length gen 4 8 0.513
tuple_return_value gen 7 8 0.867
asdl_generated gen 4 4 0.946
varargs gen 54 56 0.973
escape gen 8 8 0.987
files gen 4 4 1.059
loops gen 4 4 1.118
fib_iter gen 0 0 NA

raw benchmark files