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 19 0.000
modules gen 0 175 0.000
fib_iter gen 8 974 0.008
fib_recursive gen 7 866 0.008
loops gen 4 300 0.012
asdl_generated gen 11 394 0.027
parse gen 25 759 0.034
scoped_resource gen 47 1,029 0.045
containers gen 8 96 0.080
tuple_return_value gen 21 193 0.106
files gen 7 69 0.108
length gen 37 202 0.184
cartesian gen 77 326 0.237
varargs gen 4 16 0.258
escape gen 99 344 0.287
cgi gen 265 522 0.507
control_flow gen 210 109 1.918

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.9 0.40
parse gen 3.7 7.5 0.49
cartesian gen 3.5 7.1 0.50
scoped_resource gen 3.5 6.9 0.51
loops gen 3.7 7.1 0.52
asdl_generated gen 3.7 6.9 0.53
cgi gen 3.7 6.9 0.53
fib_recursive gen 3.7 6.9 0.53
modules gen 3.7 6.9 0.53
tuple_return_value gen 3.8 7.1 0.54
escape gen 3.7 6.8 0.54
control_flow gen 3.8 6.9 0.55
fib_iter gen 3.8 6.9 0.55
length gen 3.8 6.9 0.55
files gen 3.9 6.8 0.58
containers gen 28.5 47.7 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 12 0.000
control_flow gen 0 4 0.000
fib_iter gen 0 4 0.000
files gen 0 8 0.000
loops gen 0 4 0.000
scoped_resource gen 0 8 0.000
containers gen 8 40 0.192
modules gen 2 8 0.231
classes gen 3 12 0.276
fib_recursive gen 4 8 0.448
parse gen 4 8 0.456
cgi gen 4 4 0.999
varargs gen 62 56 1.108
cartesian gen 12 8 1.533
escape gen 8 4 1.973
length gen 8 4 2.085
tuple_return_value gen 0 0 NA

raw benchmark files