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
fib_recursive gen 7 893 0.008
fib_iter gen 8 915 0.008
modules gen 2 174 0.010
loops gen 4 296 0.012
asdl_generated gen 7 380 0.019
files gen 4 87 0.042
scoped_resource gen 47 1,040 0.045
parse gen 38 779 0.049
tuple_return_value gen 13 190 0.071
containers gen 11 110 0.104
length gen 41 207 0.197
gc_stack_roots gen 2 8 0.210
cartesian gen 87 319 0.273
escape gen 108 357 0.302
cgi gen 268 507 0.530
varargs gen 28 32 0.886
control_flow gen 202 110 1.834

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
gc_stack_roots gen 3.4 6.9 0.49
parse gen 3.9 7.6 0.52
asdl_generated gen 3.7 7.1 0.52
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.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
scoped_resource gen 3.8 6.9 0.55
tuple_return_value gen 3.8 6.9 0.55
modules gen 3.9 6.9 0.57
containers gen 28.5 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
cgi gen 0 8 0.000
escape gen 0 8 0.000
fib_iter gen 0 8 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
scoped_resource gen 0 4 0.000
containers gen 4 27 0.138
classes gen 3 8 0.416
cartesian gen 4 8 0.491
fib_recursive gen 4 4 0.900
varargs gen 36 40 0.911
control_flow gen 4 4 0.971
length gen 4 4 1.026
tuple_return_value gen 7 4 1.668
asdl_generated gen 4 0 inf
files gen 4 0 inf

raw benchmark files