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 32 0.000
fib_iter gen 4 897 0.004
modules gen 2 174 0.010
fib_recursive gen 11 884 0.012
loops gen 4 289 0.013
asdl_generated gen 7 374 0.019
parse gen 29 785 0.037
scoped_resource gen 47 1,047 0.045
containers gen 5 105 0.048
files gen 7 76 0.098
tuple_return_value gen 20 191 0.105
length gen 40 210 0.191
cartesian gen 82 339 0.243
escape gen 100 345 0.291
gc_stack_roots gen 2 4 0.441
cgi gen 249 506 0.493
control_flow gen 206 105 1.951
varargs gen 37 16 2.392

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
escape gen 3.5 7.1 0.50
fib_iter gen 3.5 7.1 0.50
asdl_generated gen 3.5 6.9 0.51
parse gen 3.9 7.6 0.52
fib_recursive gen 3.7 7.1 0.52
cartesian gen 3.7 6.9 0.53
cgi gen 3.7 6.9 0.53
gc_stack_roots gen 3.7 6.9 0.53
length 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
modules gen 3.8 7.1 0.54
scoped_resource gen 3.8 7.1 0.54
control_flow gen 3.8 6.9 0.55
files gen 3.9 7.1 0.56
containers gen 28.5 47.8 0.59
varargs gen 5.5 6.9 0.79

System Time (milliseconds)

Lower ratios are better.

example name gen C++ Python C++ : Python
gc_stack_roots gen 0 8 0.000
loops gen 0 8 0.000
modules gen 0 8 0.000
parse gen 0 4 0.000
scoped_resource gen 0 8 0.000
tuple_return_value gen 0 8 0.000
asdl_generated gen 4 12 0.301
cgi gen 4 12 0.337
containers gen 10 28 0.354
fib_iter gen 4 8 0.483
control_flow gen 4 8 0.488
varargs gen 29 54 0.532
escape gen 8 8 1.001
length gen 4 4 1.014
cartesian gen 8 0 inf
classes gen 3 0 inf
fib_recursive gen 0 0 NA
files gen 0 0 NA

raw benchmark files