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 23 0.000
containers gen 0 120 0.000
fib_iter gen 8 944 0.008
modules gen 2 182 0.010
fib_recursive gen 11 880 0.012
loops gen 4 295 0.012
asdl_generated gen 11 377 0.029
parse gen 23 758 0.031
scoped_resource gen 42 1,095 0.038
files gen 4 71 0.053
tuple_return_value gen 19 190 0.099
length gen 41 205 0.199
cartesian gen 84 332 0.253
escape gen 101 347 0.292
gc_stack_roots gen 2 4 0.441
cgi gen 264 505 0.522
control_flow gen 160 114 1.399
varargs gen 25 16 1.550

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
parse gen 3.8 7.6 0.50
escape gen 3.5 6.9 0.51
gc_stack_roots gen 3.5 6.9 0.51
scoped_resource gen 3.7 7.1 0.52
loops gen 3.8 7.2 0.53
asdl_generated gen 3.7 6.9 0.53
cartesian gen 3.7 6.9 0.53
cgi gen 3.7 6.9 0.53
fib_recursive gen 3.7 6.9 0.53
fib_iter gen 3.8 6.9 0.55
files gen 3.8 6.9 0.55
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
control_flow gen 3.9 6.9 0.57
containers gen 28.6 48.0 0.60
varargs gen 5.5 7.1 0.78

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
asdl_generated gen 0 4 0.000
fib_recursive gen 0 8 0.000
gc_stack_roots gen 0 8 0.000
loops gen 0 4 0.000
modules gen 0 4 0.000
tuple_return_value gen 0 4 0.000
classes gen 3 8 0.399
scoped_resource gen 4 8 0.477
parse gen 4 8 0.486
escape gen 4 8 0.515
varargs gen 41 56 0.738
containers gen 14 16 0.878
files gen 4 4 0.897
cgi gen 4 4 0.998
cartesian gen 4 4 0.998
length gen 4 4 1.014
control_flow gen 0 0 NA
fib_iter gen 0 0 NA

raw benchmark files