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
classes 0 19 0.000
fib_recursive 7 885 0.008
fib_iter 8 894 0.008
modules 2 173 0.010
loops 4 291 0.013
asdl_generated 7 381 0.019
parse 26 753 0.034
scoped_resource 39 1,036 0.038
files 4 73 0.051
tuple_return_value 17 183 0.095
containers 10 94 0.108
length 44 205 0.216
cartesian 89 342 0.260
escape 106 346 0.305
cgi 254 525 0.484
varargs 20 16 1.238
control_flow 208 109 1.906

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.5 10.9 0.41
parse 3.8 7.6 0.50
cgi 3.5 6.9 0.51
escape 3.5 6.9 0.51
asdl_generated 3.7 6.9 0.53
cartesian 3.7 6.9 0.53
fib_iter 3.7 6.9 0.53
loops 3.8 7.1 0.54
scoped_resource 3.8 7.1 0.54
tuple_return_value 3.8 7.1 0.54
control_flow 3.8 6.9 0.55
fib_recursive 3.8 6.9 0.55
files 3.8 6.9 0.55
modules 3.8 6.9 0.55
length 3.9 7.1 0.56
containers 28.5 47.8 0.59
varargs 5.6 6.9 0.81

System Time (milliseconds)

Lower ratios are better.

example name C++ Python C++ : Python
cgi 0 4 0.000
control_flow 0 4 0.000
escape 0 12 0.000
fib_iter 0 4 0.000
length 0 4 0.000
loops 0 4 0.000
modules 0 8 0.000
containers 5 41 0.124
classes 3 11 0.284
parse 4 12 0.307
tuple_return_value 3 8 0.435
fib_recursive 4 8 0.448
files 4 8 0.484
varargs 47 56 0.849
asdl_generated 4 4 0.904
scoped_resource 8 4 1.973
cartesian 0 0 NA

raw benchmark files