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 890 0.008
modules gen 2 173 0.010
fib_recursive gen 11 878 0.012
loops gen 4 290 0.013
asdl_generated gen 5 389 0.014
parse gen 26 772 0.033
scoped_resource gen 48 1,033 0.047
tuple_return_value gen 20 189 0.106
files gen 8 64 0.120
containers gen 15 119 0.129
classes gen 4 23 0.170
length gen 40 201 0.201
cartesian gen 82 353 0.233
escape gen 102 342 0.297
gc_stack_roots gen 2 4 0.456
cgi gen 256 507 0.504
varargs gen 12 12 1.040
control_flow gen 209 102 2.059

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.6 0.42
cgi gen 3.4 6.9 0.49
gc_stack_roots gen 3.4 6.9 0.49
scoped_resource gen 3.5 7.1 0.50
asdl_generated gen 3.5 6.9 0.51
cartesian gen 3.5 6.9 0.51
fib_iter gen 3.5 6.9 0.51
control_flow gen 3.7 7.1 0.52
modules gen 3.7 7.1 0.52
parse gen 3.9 7.5 0.53
fib_recursive gen 3.7 6.9 0.53
tuple_return_value gen 3.7 6.9 0.53
loops gen 3.8 7.1 0.54
escape gen 3.8 6.8 0.56
files gen 3.8 6.8 0.56
length gen 3.8 6.8 0.56
containers gen 28.7 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
cgi gen 0 12 0.000
classes gen 0 8 0.000
containers gen 0 16 0.000
control_flow gen 0 16 0.000
fib_iter gen 0 8 0.000
fib_recursive gen 0 4 0.000
files gen 0 12 0.000
gc_stack_roots gen 0 8 0.000
loops gen 0 4 0.000
modules gen 0 8 0.000
scoped_resource gen 0 12 0.000
tuple_return_value gen 0 4 0.000
parse gen 4 8 0.456
length gen 4 8 0.501
escape gen 4 8 0.510
varargs gen 54 60 0.902
cartesian gen 8 4 1.955
asdl_generated gen 5 0 inf

raw benchmark files