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 20 0.000
modules gen 0 174 0.000
fib_iter gen 8 882 0.009
loops gen 4 304 0.012
fib_recursive gen 11 877 0.013
asdl_generated gen 11 392 0.027
parse gen 25 767 0.033
scoped_resource gen 48 1,049 0.046
containers gen 10 115 0.091
files gen 8 76 0.099
tuple_return_value gen 20 184 0.109
length gen 36 203 0.179
escape gen 83 356 0.233
cartesian gen 83 333 0.248
varargs gen 8 20 0.388
gc_stack_roots gen 2 4 0.446
cgi gen 269 508 0.529
control_flow gen 214 108 1.990

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.6 10.7 0.43
parse gen 3.8 7.6 0.50
cartesian gen 3.5 6.9 0.51
cgi gen 3.5 6.9 0.51
fib_recursive gen 3.5 6.9 0.51
gc_stack_roots gen 3.5 6.9 0.51
scoped_resource gen 3.5 6.9 0.51
tuple_return_value gen 3.7 7.1 0.52
asdl_generated gen 3.7 6.9 0.53
escape gen 3.7 6.9 0.53
loops gen 3.8 7.1 0.54
length 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
files gen 3.8 6.9 0.55
modules gen 3.9 6.9 0.57
containers gen 28.5 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
asdl_generated gen 0 4 0.000
cgi gen 0 4 0.000
control_flow gen 0 8 0.000
fib_iter gen 0 12 0.000
fib_recursive gen 0 8 0.000
gc_stack_roots gen 0 8 0.000
scoped_resource gen 0 8 0.000
tuple_return_value gen 0 12 0.000
modules gen 2 8 0.229
classes gen 3 12 0.285
containers gen 7 20 0.351
parse gen 4 4 1.056
varargs gen 59 53 1.118
cartesian gen 8 4 1.958
length gen 8 4 2.023
escape gen 24 4 5.918
files gen 0 0 NA
loops gen 0 0 NA

raw benchmark files