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 4 884 0.004
modules gen 2 178 0.010
fib_recursive gen 11 874 0.012
loops gen 4 293 0.013
asdl_generated gen 7 378 0.020
parse gen 25 783 0.032
containers gen 4 106 0.036
scoped_resource gen 47 1,038 0.045
files gen 8 72 0.106
tuple_return_value gen 20 188 0.107
classes gen 3 31 0.112
length gen 39 203 0.191
cartesian gen 83 328 0.251
escape gen 105 350 0.301
varargs gen 8 23 0.341
gc_stack_roots gen 2 4 0.448
cgi gen 246 511 0.482
control_flow gen 213 110 1.946

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.8 0.41
gc_stack_roots gen 3.4 7.1 0.48
parse gen 3.7 7.6 0.48
asdl_generated gen 3.5 6.9 0.51
escape gen 3.5 6.9 0.51
loops gen 3.7 7.1 0.52
scoped_resource gen 3.7 7.1 0.52
tuple_return_value gen 3.7 7.1 0.52
cgi gen 3.5 6.8 0.52
cartesian gen 3.7 6.9 0.53
fib_iter gen 3.7 6.9 0.53
modules gen 3.7 6.9 0.53
fib_recursive gen 3.8 7.1 0.54
control_flow gen 3.8 6.9 0.55
length gen 3.8 6.9 0.55
files gen 3.8 6.8 0.56
containers gen 28.6 47.7 0.60
varargs gen 5.6 6.9 0.81

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
control_flow gen 0 4 0.000
escape gen 0 4 0.000
fib_recursive gen 0 8 0.000
files gen 0 4 0.000
gc_stack_roots gen 0 8 0.000
loops gen 0 4 0.000
modules gen 0 4 0.000
scoped_resource gen 0 12 0.000
tuple_return_value gen 0 4 0.000
fib_iter gen 4 12 0.314
containers gen 12 35 0.326
asdl_generated gen 4 8 0.465
length gen 8 8 0.974
cartesian gen 8 8 0.982
cgi gen 8 8 0.996
parse gen 4 4 1.037
varargs gen 58 50 1.180
classes gen 0 0 NA

raw benchmark files