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 C++ Python C++ : Python
files 0 64 0.000
loops 0 286 0.000
modules 0 179 0.000
fib_iter 4 888 0.004
fib_recursive 7 884 0.008
asdl_generated 7 374 0.019
parse 26 751 0.035
scoped_resource 39 1,026 0.038
tuple_return_value 16 194 0.083
containers 8 92 0.084
classes 3 19 0.168
length 36 206 0.177
cartesian 83 328 0.252
escape 106 351 0.302
varargs 8 20 0.406
cgi 268 512 0.524
control_flow 208 105 1.988

Max Resident Set Size (MB)

Lower ratios are better. We use MB (powers of 10), not MiB (powers of 2).

example name C++ Python C++ : Python
classes 4.2 10.8 0.39
cartesian 3.5 6.9 0.51
fib_recursive 3.7 7.1 0.52
scoped_resource 3.7 7.1 0.52
parse 3.9 7.5 0.53
asdl_generated 3.7 6.9 0.53
cgi 3.7 6.9 0.53
control_flow 3.7 6.9 0.53
escape 3.7 6.9 0.53
tuple_return_value 3.7 6.9 0.53
fib_iter 3.8 7.1 0.54
loops 3.8 7.1 0.54
length 3.7 6.8 0.54
files 3.8 6.9 0.55
modules 3.8 6.9 0.55
containers 28.7 47.7 0.60
varargs 5.5 6.8 0.81

System Time (milliseconds)

Lower ratios are better.

example name C++ Python C++ : Python
cgi 0 4 0.000
classes 0 11 0.000
control_flow 0 8 0.000
escape 0 4 0.000
containers 8 44 0.175
asdl_generated 4 8 0.444
loops 4 8 0.450
modules 2 4 0.454
parse 4 8 0.465
fib_iter 4 8 0.471
files 7 12 0.612
scoped_resource 8 8 0.972
cartesian 8 8 0.986
varargs 57 52 1.093
length 8 4 2.040
fib_recursive 4 0 inf
tuple_return_value 4 0 inf

raw benchmark files