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
fib_iter gen 8 904 0.008
fib_recursive gen 8 891 0.008
modules gen 2 177 0.010
loops gen 4 300 0.013
asdl_generated gen 7 384 0.019
parse gen 29 761 0.038
scoped_resource gen 43 1,043 0.041
files gen 4 72 0.054
containers gen 8 110 0.075
tuple_return_value gen 20 189 0.107
length gen 30 206 0.143
classes gen 3 16 0.199
gc_stack_roots gen 2 8 0.212
cartesian gen 83 326 0.255
escape gen 102 339 0.301
cgi gen 265 504 0.525
control_flow gen 208 115 1.807
varargs gen 31 15 2.025

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.8 0.40
parse gen 3.7 7.5 0.49
asdl_generated gen 3.5 7.1 0.50
cartesian gen 3.5 7.1 0.50
scoped_resource gen 3.7 7.2 0.51
escape gen 3.5 6.8 0.52
cgi gen 3.7 6.9 0.53
fib_iter gen 3.7 6.9 0.53
files gen 3.7 6.9 0.53
gc_stack_roots gen 3.7 6.9 0.53
tuple_return_value gen 3.7 6.9 0.53
length gen 3.8 6.9 0.55
loops gen 3.9 7.1 0.56
fib_recursive gen 3.8 6.8 0.56
modules gen 3.8 6.8 0.56
control_flow gen 3.9 6.9 0.57
containers gen 28.4 47.7 0.60
varargs gen 5.5 6.9 0.79

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
classes gen 0 16 0.000
fib_iter gen 0 12 0.000
gc_stack_roots gen 0 4 0.000
loops gen 0 4 0.000
modules gen 0 8 0.000
parse gen 0 8 0.000
tuple_return_value gen 0 4 0.000
containers gen 8 35 0.233
escape gen 4 12 0.328
fib_recursive gen 4 8 0.468
cgi gen 4 8 0.501
varargs gen 35 58 0.608
asdl_generated gen 4 4 0.900
files gen 4 4 0.973
scoped_resource gen 4 4 0.982
cartesian gen 8 8 0.995
length gen 15 4 3.654
control_flow gen 4 0 inf

raw benchmark files