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_recursive gen 7 884 0.008
fib_iter gen 8 901 0.009
loops gen 3 288 0.010
modules gen 2 172 0.011
asdl_generated gen 11 380 0.030
parse gen 26 777 0.033
scoped_resource gen 49 1,143 0.043
files gen 4 68 0.056
containers gen 8 111 0.072
tuple_return_value gen 16 191 0.084
classes gen 3 23 0.138
length gen 45 210 0.213
cartesian gen 84 331 0.253
escape gen 101 356 0.284
gc_stack_roots gen 2 4 0.435
cgi gen 269 504 0.534
varargs gen 12 20 0.617
control_flow gen 204 107 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.9 0.41
parse gen 3.8 7.6 0.50
asdl_generated gen 3.5 6.9 0.51
gc_stack_roots gen 3.5 6.9 0.51
tuple_return_value gen 3.5 6.9 0.51
escape gen 3.7 7.1 0.52
loops gen 3.8 7.2 0.53
cartesian gen 3.7 6.9 0.53
cgi gen 3.7 6.9 0.53
length gen 3.7 6.9 0.53
fib_iter gen 3.8 7.1 0.54
fib_recursive gen 3.8 7.1 0.54
scoped_resource gen 3.8 7.1 0.54
files gen 3.8 6.9 0.55
modules gen 3.8 6.8 0.56
control_flow gen 3.9 6.9 0.57
containers gen 28.9 47.8 0.60
varargs gen 5.6 6.8 0.83

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
asdl_generated gen 0 4 0.000
cgi gen 0 8 0.000
classes gen 0 8 0.000
fib_iter gen 0 12 0.000
gc_stack_roots gen 0 8 0.000
length gen 0 4 0.000
loops gen 0 12 0.000
modules gen 0 12 0.000
scoped_resource gen 0 4 0.000
containers gen 8 28 0.287
tuple_return_value gen 4 12 0.337
fib_recursive gen 4 8 0.452
files gen 4 8 0.474
control_flow gen 4 8 0.505
varargs gen 54 52 1.029
escape gen 8 4 2.019
cartesian gen 12 4 2.961
parse gen 4 0 inf

raw benchmark files