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
fib_iter 8 897 0.008
modules 2 179 0.010
fib_recursive 11 878 0.012
loops 4 283 0.013
asdl_generated 11 369 0.029
parse 29 777 0.038
scoped_resource 48 1,036 0.046
files 7 72 0.103
tuple_return_value 20 186 0.108
classes 3 26 0.125
containers 15 102 0.152
length 43 201 0.214
escape 95 352 0.270
cartesian 90 331 0.273
cgi 243 514 0.472
varargs 16 12 1.365
control_flow 206 106 1.944

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.7 0.41
escape 3.5 6.9 0.51
parse 3.9 7.6 0.52
asdl_generated 3.7 6.9 0.53
cgi 3.7 6.9 0.53
fib_iter 3.7 6.9 0.53
files 3.7 6.9 0.53
scoped_resource 3.7 6.9 0.53
tuple_return_value 3.8 7.1 0.54
cartesian 3.7 6.8 0.54
control_flow 3.8 6.9 0.55
fib_recursive 3.8 6.9 0.55
loops 3.8 6.9 0.55
modules 3.8 6.9 0.55
length 3.9 6.9 0.57
containers 28.5 47.6 0.60
varargs 5.5 6.9 0.79

System Time (milliseconds)

Lower ratios are better.

example name C++ Python C++ : Python
asdl_generated 0 12 0.000
cartesian 0 4 0.000
classes 0 4 0.000
containers 0 32 0.000
fib_iter 0 8 0.000
fib_recursive 0 8 0.000
files 0 4 0.000
loops 0 12 0.000
modules 0 4 0.000
parse 0 8 0.000
scoped_resource 0 8 0.000
tuple_return_value 0 8 0.000
control_flow 4 8 0.486
length 4 8 0.497
varargs 49 60 0.819
cgi 8 8 1.008
escape 12 4 2.973

raw benchmark files