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
gc_stack_roots gen 0 8 0.000
fib_iter gen 8 888 0.009
modules gen 2 176 0.010
loops gen 3 292 0.010
fib_recursive gen 11 878 0.012
asdl_generated gen 7 378 0.019
parse gen 19 766 0.024
scoped_resource gen 44 1,054 0.042
files gen 4 69 0.055
containers gen 8 116 0.066
tuple_return_value gen 16 187 0.086
length gen 40 203 0.197
classes gen 3 15 0.202
cartesian gen 75 326 0.230
escape gen 104 347 0.300
cgi gen 265 506 0.523
varargs gen 12 12 1.035
control_flow gen 210 105 2.006

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.8 0.40
parse gen 3.9 7.7 0.51
cgi gen 3.5 6.9 0.51
gc_stack_roots gen 3.5 6.9 0.51
modules gen 3.5 6.9 0.51
cartesian gen 3.7 7.1 0.52
loops gen 3.8 7.2 0.53
asdl_generated gen 3.7 6.9 0.53
escape gen 3.7 6.9 0.53
fib_recursive gen 3.7 6.9 0.53
scoped_resource gen 3.7 6.9 0.53
files gen 3.8 7.1 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
tuple_return_value gen 3.8 6.9 0.55
containers gen 28.6 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
classes gen 0 15 0.000
control_flow gen 0 8 0.000
fib_iter gen 0 4 0.000
fib_recursive gen 0 4 0.000
loops gen 0 4 0.000
modules gen 0 8 0.000
asdl_generated gen 4 8 0.451
gc_stack_roots gen 2 4 0.454
files gen 4 8 0.470
containers gen 8 16 0.477
cgi gen 4 8 0.503
scoped_resource gen 4 8 0.504
varargs gen 54 60 0.897
length gen 4 4 0.986
escape gen 4 4 1.003
tuple_return_value gen 4 4 1.010
parse gen 11 8 1.386
cartesian gen 16 8 1.989

raw benchmark files