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
modules gen 0 178 0.000
fib_iter gen 4 891 0.004
fib_recursive gen 7 888 0.008
loops gen 4 300 0.012
asdl_generated gen 7 371 0.019
parse gen 25 755 0.033
containers gen 4 111 0.037
scoped_resource gen 48 1,035 0.047
files gen 7 76 0.097
tuple_return_value gen 20 184 0.111
classes gen 3 24 0.133
length gen 33 200 0.163
cartesian gen 85 333 0.256
escape gen 103 349 0.295
gc_stack_roots gen 2 4 0.493
cgi gen 265 504 0.525
varargs gen 31 28 1.114
control_flow gen 202 107 1.897

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 6.9 0.49
parse gen 3.9 7.7 0.51
asdl_generated gen 3.5 6.9 0.51
cartesian gen 3.5 6.9 0.51
escape gen 3.5 6.9 0.51
scoped_resource gen 3.7 7.1 0.52
cgi gen 3.7 6.9 0.53
files gen 3.7 6.9 0.53
tuple_return_value gen 3.7 6.9 0.53
control_flow gen 3.8 7.1 0.54
loops gen 3.8 7.1 0.54
fib_recursive gen 3.7 6.8 0.54
fib_iter gen 3.8 6.9 0.55
length gen 3.8 6.9 0.55
modules gen 3.8 6.9 0.55
containers gen 28.5 47.8 0.60
varargs gen 5.4 7.1 0.76

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
classes gen 0 8 0.000
gc_stack_roots gen 0 8 0.000
loops gen 0 8 0.000
scoped_resource gen 0 4 0.000
tuple_return_value gen 0 8 0.000
modules gen 2 8 0.232
asdl_generated gen 4 12 0.302
parse gen 4 12 0.351
containers gen 12 28 0.441
fib_recursive gen 4 8 0.453
fib_iter gen 4 8 0.478
cgi gen 4 8 0.494
control_flow gen 4 8 0.502
cartesian gen 4 8 0.507
varargs gen 35 44 0.797
escape gen 4 4 1.027
length gen 12 8 1.527
files gen 0 0 NA

raw benchmark files