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
loops gen 0 286 0.000
modules gen 0 174 0.000
fib_iter gen 4 892 0.004
asdl_generated gen 4 404 0.009
fib_recursive gen 11 882 0.012
parse gen 29 765 0.038
scoped_resource gen 47 1,018 0.046
tuple_return_value gen 10 183 0.055
containers gen 8 108 0.070
files gen 7 68 0.109
gc_stack_roots gen 2 12 0.151
classes gen 3 19 0.166
length gen 44 203 0.219
cartesian gen 83 325 0.255
escape gen 104 354 0.295
cgi gen 242 502 0.483
varargs gen 31 24 1.306
control_flow gen 209 115 1.818

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
cartesian gen 3.5 7.1 0.50
scoped_resource gen 3.5 7.1 0.50
gc_stack_roots gen 3.5 6.9 0.51
parse gen 3.9 7.6 0.52
asdl_generated gen 3.7 6.9 0.53
cgi gen 3.7 6.9 0.53
escape gen 3.7 6.9 0.53
fib_iter 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.7 6.9 0.53
loops gen 3.8 7.1 0.54
control_flow gen 3.8 6.9 0.55
files gen 3.8 6.9 0.55
length gen 3.8 6.9 0.55
containers gen 28.7 47.8 0.60
varargs gen 5.6 6.9 0.81

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
classes gen 0 11 0.000
fib_recursive gen 0 8 0.000
files gen 0 8 0.000
length gen 0 12 0.000
parse gen 0 8 0.000
scoped_resource gen 0 12 0.000
modules gen 2 8 0.228
fib_iter gen 4 12 0.313
containers gen 8 24 0.317
loops gen 4 8 0.453
asdl_generated gen 7 12 0.602
varargs gen 35 48 0.734
cgi gen 12 12 1.014
tuple_return_value gen 10 8 1.260
cartesian gen 8 4 1.965
escape gen 8 0 inf
control_flow gen 0 0 NA
gc_stack_roots gen 0 0 NA

raw benchmark files