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
loops 0 286 0.000
fib_iter 8 933 0.008
fib_recursive 11 1,138 0.010
modules 2 179 0.010
asdl_generated 5 381 0.014
parse 26 776 0.034
scoped_resource 43 1,024 0.042
containers 4 88 0.045
files 7 73 0.102
tuple_return_value 20 189 0.107
classes 3 19 0.170
length 44 207 0.212
cartesian 83 338 0.245
escape 104 347 0.299
varargs 12 28 0.422
cgi 269 510 0.527
control_flow 210 114 1.841

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.6 0.42
parse 3.7 7.5 0.49
scoped_resource 3.5 7.1 0.50
asdl_generated 3.5 6.9 0.51
cartesian 3.7 6.9 0.53
cgi 3.7 6.9 0.53
escape 3.7 6.9 0.53
fib_recursive 3.7 6.9 0.53
tuple_return_value 3.7 6.9 0.53
fib_iter 3.5 6.7 0.53
control_flow 3.8 6.9 0.55
files 3.8 6.9 0.55
length 3.8 6.9 0.55
loops 3.8 6.9 0.55
modules 3.9 6.9 0.57
containers 28.7 47.8 0.60
varargs 5.4 6.9 0.77

System Time (milliseconds)

Lower ratios are better.

example name C++ Python C++ : Python
cgi 0 4 0.000
classes 0 12 0.000
escape 0 8 0.000
fib_iter 0 8 0.000
fib_recursive 0 16 0.000
files 0 4 0.000
length 0 4 0.000
modules 0 4 0.000
tuple_return_value 0 4 0.000
containers 12 48 0.249
parse 4 8 0.466
loops 4 8 0.506
asdl_generated 5 8 0.671
scoped_resource 4 4 0.978
varargs 55 44 1.254
cartesian 8 4 1.980
control_flow 0 0 NA

raw benchmark files