In [1]:
%pylab inline


Populating the interactive namespace from numpy and matplotlib

In [2]:
plt.style.use('ggplot')

In [3]:
import pandas as pd

In [4]:
baseline = pd.read_table("baseline.tsv")
intvector = pd.read_table("intvector.tsv")
bench = pd.concat([baseline, intvector])

In [5]:
bench.type = map(lambda s: s.split(".")[-1], bench.type)
bench["absttype"] = map(lambda s: s.split("{")[0], bench.type)

In [6]:
figsize(12, 8)

In [7]:
def plot_bench(name, eltype):
    bench[(bench.absttype == "IntArray") & (bench.eltype == eltype)]\
        .pivot(index="w", columns="absttype", values="bench_" + name)\
        .plot(style="o-", legend=False)
    baseline = bench.ix[
        (bench.absttype == "Array") & (bench.eltype == eltype),
        "bench_" + name]
    axhline(float(baseline), linestyle="--", label="Array (baseline)")
    title("{} ({})".format(name, eltype))
    ylim(ymin=0)
    ylabel("sec / op")
    #grid()
    legend(loc="upper left")
    savefig("{}_{}.png".format(name, eltype))

In [8]:
for eltype in ["UInt8", "UInt16", "UInt32", "UInt64"]:
    for name in ["getindex", "setindex", "fill0", "fill1", "copy", "copysort"]:
        plot_bench(name, eltype)
        show()



In [9]:
pd.options.display.max_rows = 1000

In [10]:
bench.columns


Out[10]:
Index([u'bench_copy', u'bench_copysort', u'bench_fill0', u'bench_fill1',
       u'bench_getindex', u'bench_setindex', u'eltype', u'type', u'w',
       u'absttype'],
      dtype='object')

In [11]:
baseline


Out[11]:
type eltype bench_getindex bench_setindex bench_fill0 bench_fill1 bench_copy bench_copysort
0 Array{UInt8,1} UInt8 3.249600e-10 4.919100e-10 0.000004 0.000004 0.000043 0.001423
1 Array{UInt16,1} UInt16 3.249700e-10 6.546900e-10 0.000007 0.000017 0.000091 0.001311
2 Array{UInt32,1} UInt32 3.250100e-10 6.561600e-10 0.000016 0.000022 0.000170 0.001673
3 Array{UInt64,1} UInt64 3.249900e-10 9.778400e-10 0.000028 0.000039 0.000347 0.001354

In [12]:
intvector


Out[12]:
type eltype w bench_getindex bench_setindex bench_fill0 bench_fill1 bench_copy bench_copysort
0 IntArrays.IntArray{1,UInt8,1} UInt8 1 6.475900e-10 3.087220e-09 3.730000e-07 3.750000e-07 0.000005 0.008443
1 IntArrays.IntArray{2,UInt8,1} UInt8 2 6.476200e-10 2.997860e-09 5.220000e-07 5.210000e-07 0.000007 0.008753
2 IntArrays.IntArray{3,UInt8,1} UInt8 3 6.476300e-10 3.663940e-09 1.533000e-06 3.507300e-05 0.000007 0.012005
3 IntArrays.IntArray{4,UInt8,1} UInt8 4 6.474600e-10 2.916480e-09 1.975000e-06 1.969000e-06 0.000007 0.008599
4 IntArrays.IntArray{5,UInt8,1} UInt8 5 6.476300e-10 4.229120e-09 2.422000e-06 6.919800e-05 0.000009 0.013971
5 IntArrays.IntArray{6,UInt8,1} UInt8 6 6.476300e-10 4.184060e-09 2.858000e-06 6.973200e-05 0.000011 0.014266
6 IntArrays.IntArray{7,UInt8,1} UInt8 7 6.475400e-10 4.792410e-09 3.307000e-06 1.125160e-04 0.000012 0.016087
7 IntArrays.IntArray{8,UInt8,1} UInt8 8 6.475100e-10 1.162300e-09 3.740000e-06 3.739000e-06 0.000011 0.004355
8 IntArrays.IntArray{1,UInt16,1} UInt16 1 6.474600e-10 2.700520e-09 3.770000e-07 1.265000e-06 0.000006 0.008088
9 IntArrays.IntArray{2,UInt16,1} UInt16 2 7.169000e-10 2.663660e-09 5.760000e-07 2.304000e-06 0.000007 0.008119
10 IntArrays.IntArray{3,UInt16,1} UInt16 3 6.475900e-10 3.205380e-09 1.525000e-06 2.308200e-05 0.000008 0.010359
11 IntArrays.IntArray{4,UInt16,1} UInt16 4 6.474800e-10 2.624270e-09 1.975000e-06 4.575000e-06 0.000009 0.008066
12 IntArrays.IntArray{5,UInt16,1} UInt16 5 6.475900e-10 3.497070e-09 2.874000e-06 4.905400e-05 0.000010 0.011745
13 IntArrays.IntArray{6,UInt16,1} UInt16 6 6.476000e-10 3.492230e-09 2.850000e-06 4.480100e-05 0.000010 0.011761
14 IntArrays.IntArray{7,UInt16,1} UInt16 7 6.475800e-10 3.775910e-09 3.300000e-06 8.419600e-05 0.000010 0.012861
15 IntArrays.IntArray{8,UInt16,1} UInt16 8 6.474800e-10 2.618390e-09 3.772000e-06 8.858000e-06 0.000012 0.007916
16 IntArrays.IntArray{9,UInt16,1} UInt16 9 6.475200e-10 4.062950e-09 4.238000e-06 1.279920e-04 0.000015 0.013537
17 IntArrays.IntArray{10,UInt16,1} UInt16 10 6.476200e-10 4.070020e-09 4.622000e-06 9.743900e-05 0.000014 0.013786
18 IntArrays.IntArray{11,UInt16,1} UInt16 11 1.611830e-09 4.817500e-09 5.059000e-06 1.790410e-04 0.000071 0.014953
19 IntArrays.IntArray{12,UInt16,1} UInt16 12 6.476000e-10 4.215580e-09 5.520000e-06 8.974700e-05 0.000035 0.013797
20 IntArrays.IntArray{13,UInt16,1} UInt16 13 6.476100e-10 4.635860e-09 5.941000e-06 2.230900e-04 0.000082 0.016061
21 IntArrays.IntArray{14,UInt16,1} UInt16 14 6.476100e-10 4.636420e-09 7.088000e-06 1.682780e-04 0.000037 0.016011
22 IntArrays.IntArray{15,UInt16,1} UInt16 15 6.474600e-10 4.937530e-09 6.842000e-06 2.918570e-04 0.000095 0.017120
23 IntArrays.IntArray{16,UInt16,1} UInt16 16 6.475100e-10 1.159840e-09 7.279000e-06 1.745700e-05 0.000098 0.004365
24 IntArrays.IntArray{1,UInt32,1} UInt32 1 6.474800e-10 3.213930e-09 3.730000e-07 7.540000e-07 0.000012 0.007735
25 IntArrays.IntArray{2,UInt32,1} UInt32 2 6.475300e-10 2.672360e-09 5.230000e-07 1.317000e-06 0.000007 0.007913
26 IntArrays.IntArray{3,UInt32,1} UInt32 3 6.474600e-10 3.214070e-09 1.529000e-06 1.359600e-05 0.000008 0.010145
27 IntArrays.IntArray{4,UInt32,1} UInt32 4 1.453940e-09 2.641530e-09 1.962000e-06 2.575000e-06 0.000009 0.007823
28 IntArrays.IntArray{5,UInt32,1} UInt32 5 7.720900e-10 3.367150e-09 2.412000e-06 3.842600e-05 0.000010 0.011034
29 IntArrays.IntArray{6,UInt32,1} UInt32 6 6.476300e-10 3.206620e-09 2.850000e-06 3.278000e-05 0.000010 0.010639
30 IntArrays.IntArray{7,UInt32,1} UInt32 7 6.476300e-10 3.350640e-09 3.300000e-06 6.538400e-05 0.000012 0.011493
31 IntArrays.IntArray{8,UInt32,1} UInt32 8 6.475000e-10 2.893600e-09 3.733000e-06 4.843000e-06 0.000012 0.007859
32 IntArrays.IntArray{9,UInt32,1} UInt32 9 6.475600e-10 3.640860e-09 4.177000e-06 9.158500e-05 0.000012 0.011754
33 IntArrays.IntArray{10,UInt32,1} UInt32 10 6.476400e-10 3.489330e-09 4.618000e-06 1.401340e-04 0.000013 0.011801
34 IntArrays.IntArray{11,UInt32,1} UInt32 11 6.474900e-10 3.629610e-09 5.064000e-06 1.297200e-04 0.000014 0.012284
35 IntArrays.IntArray{12,UInt32,1} UInt32 12 7.721400e-10 3.492260e-09 5.521000e-06 6.534400e-05 0.000016 0.011722
36 IntArrays.IntArray{13,UInt32,1} UInt32 13 6.475600e-10 3.775590e-09 5.958000e-06 1.876340e-04 0.000016 0.013076
37 IntArrays.IntArray{14,UInt32,1} UInt32 14 6.475900e-10 3.778460e-09 6.402000e-06 1.306500e-04 0.000017 0.013041
38 IntArrays.IntArray{15,UInt32,1} UInt32 15 6.475600e-10 3.922160e-09 6.824000e-06 2.049920e-04 0.000018 0.013600
39 IntArrays.IntArray{16,UInt32,1} UInt32 16 6.474900e-10 2.606560e-09 7.280000e-06 9.390000e-06 0.000019 0.008070
40 IntArrays.IntArray{17,UInt32,1} UInt32 17 7.169100e-10 4.059240e-09 7.719000e-06 3.162340e-04 0.000108 0.014106
41 IntArrays.IntArray{18,UInt32,1} UInt32 18 6.475800e-10 4.060780e-09 8.144000e-06 1.611570e-04 0.000111 0.013917
42 IntArrays.IntArray{19,UInt32,1} UInt32 19 6.474600e-10 4.201130e-09 8.721000e-06 3.383440e-04 0.000119 0.014612
43 IntArrays.IntArray{20,UInt32,1} UInt32 20 6.476000e-10 4.058060e-09 9.050000e-06 1.707840e-04 0.000115 0.014214
44 IntArrays.IntArray{21,UInt32,1} UInt32 21 6.476100e-10 4.521850e-09 9.479000e-06 3.366530e-04 0.000122 0.015394
45 IntArrays.IntArray{22,UInt32,1} UInt32 22 6.476500e-10 4.347750e-09 9.923000e-06 2.641610e-04 0.000127 0.015300
46 IntArrays.IntArray{23,UInt32,1} UInt32 23 1.453920e-09 4.644570e-09 1.037100e-05 3.878370e-04 0.000146 0.016166
47 IntArrays.IntArray{24,UInt32,1} UInt32 24 6.474900e-10 4.059950e-09 1.287900e-05 1.334550e-04 0.000145 0.013897
48 IntArrays.IntArray{25,UInt32,1} UInt32 25 6.475900e-10 5.515250e-09 1.124500e-05 4.426550e-04 0.000151 0.015968
49 IntArrays.IntArray{26,UInt32,1} UInt32 26 6.474900e-10 4.629570e-09 1.169400e-05 4.207250e-04 0.000050 0.016171
50 IntArrays.IntArray{27,UInt32,1} UInt32 27 6.476200e-10 4.765550e-09 1.213500e-05 4.999010e-04 0.000163 0.016760
51 IntArrays.IntArray{28,UInt32,1} UInt32 28 6.475300e-10 4.620200e-09 1.256900e-05 2.908660e-04 0.000051 0.016077
52 IntArrays.IntArray{29,UInt32,1} UInt32 29 6.475200e-10 4.908970e-09 1.301000e-05 5.408750e-04 0.000173 0.017724
53 IntArrays.IntArray{30,UInt32,1} UInt32 30 7.169100e-10 4.903130e-09 1.360600e-05 5.613370e-04 0.000055 0.017427
54 IntArrays.IntArray{31,UInt32,1} UInt32 31 6.475200e-10 5.046030e-09 1.387700e-05 6.708190e-04 0.000185 0.018357
55 IntArrays.IntArray{32,UInt32,1} UInt32 32 6.474900e-10 1.362460e-09 1.434100e-05 2.020900e-05 0.000185 0.004300
56 IntArrays.IntArray{1,UInt64,1} UInt64 1 7.720600e-10 2.604540e-09 4.110000e-07 5.100000e-07 0.000006 0.008151
57 IntArrays.IntArray{2,UInt64,1} UInt64 2 6.475500e-10 2.677980e-09 5.410000e-07 8.070000e-07 0.000008 0.007748
58 IntArrays.IntArray{3,UInt64,1} UInt64 3 6.475800e-10 2.994910e-09 1.526000e-06 1.232300e-05 0.000009 0.009816
59 IntArrays.IntArray{4,UInt64,1} UInt64 4 6.474700e-10 2.661010e-09 1.972000e-06 1.819000e-06 0.000010 0.007781
60 IntArrays.IntArray{5,UInt64,1} UInt64 5 6.475200e-10 3.214550e-09 2.415000e-06 2.503900e-05 0.000011 0.010299
61 IntArrays.IntArray{6,UInt64,1} UInt64 6 6.476500e-10 3.812100e-09 2.859000e-06 2.447100e-05 0.000011 0.010301
62 IntArrays.IntArray{7,UInt64,1} UInt64 7 6.476300e-10 3.290010e-09 3.303000e-06 4.580800e-05 0.000011 0.010535
63 IntArrays.IntArray{8,UInt64,1} UInt64 8 6.475300e-10 2.635700e-09 3.737000e-06 4.014000e-06 0.000013 0.007814
64 IntArrays.IntArray{9,UInt64,1} UInt64 9 6.474700e-10 3.299830e-09 4.181000e-06 7.746900e-05 0.000013 0.010605
65 IntArrays.IntArray{10,UInt64,1} UInt64 10 7.168700e-10 3.378130e-09 4.631000e-06 4.950200e-05 0.000015 0.011013
66 IntArrays.IntArray{11,UInt64,1} UInt64 11 6.475300e-10 3.280030e-09 5.117000e-06 1.199540e-04 0.000078 0.011080
67 IntArrays.IntArray{12,UInt64,1} UInt64 12 6.476200e-10 3.207700e-09 5.525000e-06 4.865900e-05 0.000076 0.010507
68 IntArrays.IntArray{13,UInt64,1} UInt64 13 6.476000e-10 3.440770e-09 5.997000e-06 1.218430e-04 0.000085 0.011443
69 IntArrays.IntArray{14,UInt64,1} UInt64 14 6.476200e-10 3.957700e-09 6.392000e-06 9.101000e-05 0.000090 0.011590
70 IntArrays.IntArray{15,UInt64,1} UInt64 15 6.474700e-10 3.420040e-09 6.825000e-06 1.368440e-04 0.000092 0.011727
71 IntArrays.IntArray{16,UInt64,1} UInt64 16 6.475300e-10 2.619610e-09 7.272000e-06 6.537000e-06 0.000097 0.007994
72 IntArrays.IntArray{17,UInt64,1} UInt64 17 9.713300e-10 3.495680e-09 7.731000e-06 1.574970e-04 0.000106 0.012076
73 IntArrays.IntArray{18,UInt64,1} UInt64 18 6.474600e-10 3.498710e-09 8.157000e-06 1.606280e-04 0.000106 0.011867
74 IntArrays.IntArray{19,UInt64,1} UInt64 19 6.475400e-10 4.254280e-09 8.595000e-06 1.895720e-04 0.000112 0.012327
75 IntArrays.IntArray{20,UInt64,1} UInt64 20 6.476100e-10 3.864280e-09 9.037000e-06 9.845100e-05 0.000125 0.011664
76 IntArrays.IntArray{21,UInt64,1} UInt64 21 6.476100e-10 4.115260e-09 9.479000e-06 1.908180e-04 0.000132 0.012269
77 IntArrays.IntArray{22,UInt64,1} UInt64 22 7.721200e-10 3.635160e-09 9.920000e-06 1.782750e-04 0.000129 0.012380
78 IntArrays.IntArray{23,UInt64,1} UInt64 23 6.476200e-10 3.706810e-09 1.036300e-05 1.853550e-04 0.000146 0.012884
79 IntArrays.IntArray{24,UInt64,1} UInt64 24 6.487800e-10 3.495600e-09 1.080600e-05 1.062650e-04 0.000136 0.011428
80 IntArrays.IntArray{25,UInt64,1} UInt64 25 6.476000e-10 3.779020e-09 1.124000e-05 2.280290e-04 0.000156 0.013507
81 IntArrays.IntArray{26,UInt64,1} UInt64 26 6.476200e-10 3.781270e-09 1.170200e-05 2.514390e-04 0.000179 0.012908
82 IntArrays.IntArray{27,UInt64,1} UInt64 27 1.180950e-09 4.591700e-09 1.214700e-05 2.276570e-04 0.000191 0.013715
83 IntArrays.IntArray{28,UInt64,1} UInt64 28 6.476000e-10 4.187690e-09 1.256900e-05 2.458660e-04 0.000164 0.013018
84 IntArrays.IntArray{29,UInt64,1} UInt64 29 6.476300e-10 3.921170e-09 1.302100e-05 2.351470e-04 0.000162 0.013820
85 IntArrays.IntArray{30,UInt64,1} UInt64 30 6.475900e-10 3.921770e-09 1.344900e-05 2.837280e-04 0.000186 0.013853
86 IntArrays.IntArray{31,UInt64,1} UInt64 31 6.476100e-10 3.993690e-09 1.389700e-05 2.508660e-04 0.000173 0.014065
87 IntArrays.IntArray{32,UInt64,1} UInt64 32 6.474700e-10 2.621420e-09 1.433000e-05 1.703000e-05 0.000184 0.007977
88 IntArrays.IntArray{33,UInt64,1} UInt64 33 6.474800e-10 4.380700e-09 1.476900e-05 2.733580e-04 0.000187 0.014525
89 IntArrays.IntArray{34,UInt64,1} UInt64 34 6.475700e-10 4.377780e-09 1.521300e-05 3.957960e-04 0.000214 0.014507
90 IntArrays.IntArray{35,UInt64,1} UInt64 35 6.474700e-10 4.456170e-09 1.563400e-05 5.010800e-04 0.000196 0.014768
91 IntArrays.IntArray{36,UInt64,1} UInt64 36 8.898400e-10 4.383070e-09 1.609200e-05 3.644760e-04 0.000197 0.014707
92 IntArrays.IntArray{37,UInt64,1} UInt64 37 6.474800e-10 4.528980e-09 1.651700e-05 3.115740e-04 0.000229 0.015259
93 IntArrays.IntArray{38,UInt64,1} UInt64 38 6.476100e-10 4.522110e-09 1.697600e-05 5.304880e-04 0.000244 0.014907
94 IntArrays.IntArray{39,UInt64,1} UInt64 39 6.485600e-10 4.594480e-09 1.743300e-05 3.471120e-04 0.000246 0.015624
95 IntArrays.IntArray{40,UInt64,1} UInt64 40 6.474400e-10 4.385500e-09 1.785200e-05 2.645450e-04 0.000233 0.014399
96 IntArrays.IntArray{41,UInt64,1} UInt64 41 6.474900e-10 4.753060e-09 1.830800e-05 3.523310e-04 0.000068 0.016061
97 IntArrays.IntArray{42,UInt64,1} UInt64 42 6.476000e-10 4.834150e-09 2.235200e-05 6.313520e-04 0.000251 0.015510
98 IntArrays.IntArray{43,UInt64,1} UInt64 43 6.475000e-10 4.738170e-09 1.917900e-05 3.717520e-04 0.000073 0.015628
99 IntArrays.IntArray{44,UInt64,1} UInt64 44 6.475800e-10 4.669590e-09 1.964200e-05 4.598870e-04 0.000269 0.015945
100 IntArrays.IntArray{45,UInt64,1} UInt64 45 6.475800e-10 4.810510e-09 2.005900e-05 4.125290e-04 0.000071 0.016399
101 IntArrays.IntArray{46,UInt64,1} UInt64 46 6.475200e-10 4.964090e-09 2.051600e-05 7.817630e-04 0.000302 0.016704
102 IntArrays.IntArray{47,UInt64,1} UInt64 47 6.474300e-10 4.877990e-09 2.094600e-05 4.482910e-04 0.000087 0.016450
103 IntArrays.IntArray{48,UInt64,1} UInt64 48 6.474900e-10 4.379080e-09 2.146500e-05 2.206510e-04 0.000271 0.014378
104 IntArrays.IntArray{49,UInt64,1} UInt64 49 6.474700e-10 5.037440e-09 2.188500e-05 4.216400e-04 0.000078 0.016618
105 IntArrays.IntArray{50,UInt64,1} UInt64 50 6.476000e-10 4.948690e-09 2.229700e-05 8.988130e-04 0.000296 0.017308
106 IntArrays.IntArray{51,UInt64,1} UInt64 51 6.475300e-10 5.022870e-09 2.270100e-05 4.396090e-04 0.000079 0.016654
107 IntArrays.IntArray{52,UInt64,1} UInt64 52 6.475900e-10 4.951610e-09 2.313400e-05 5.314310e-04 0.000300 0.016942
108 IntArrays.IntArray{53,UInt64,1} UInt64 53 6.475700e-10 5.090380e-09 2.358400e-05 5.054660e-04 0.000081 0.017938
109 IntArrays.IntArray{54,UInt64,1} UInt64 54 6.474900e-10 5.085400e-09 2.401900e-05 9.772980e-04 0.000327 0.017299
110 IntArrays.IntArray{55,UInt64,1} UInt64 55 7.169900e-10 5.159900e-09 2.446700e-05 4.741260e-04 0.000085 0.017833
111 IntArrays.IntArray{56,UInt64,1} UInt64 56 6.475100e-10 4.949050e-09 2.494800e-05 5.465730e-04 0.000348 0.016421
112 IntArrays.IntArray{57,UInt64,1} UInt64 57 6.475800e-10 5.236020e-09 2.535200e-05 4.925580e-04 0.000088 0.018419
113 IntArrays.IntArray{58,UInt64,1} UInt64 58 6.475900e-10 5.232000e-09 2.579500e-05 1.055224e-03 0.000318 0.017564
114 IntArrays.IntArray{59,UInt64,1} UInt64 59 6.476200e-10 5.304570e-09 2.905300e-05 5.088340e-04 0.000090 0.018487
115 IntArrays.IntArray{60,UInt64,1} UInt64 60 6.475700e-10 5.234790e-09 2.667000e-05 5.639590e-04 0.000360 0.017276
116 IntArrays.IntArray{61,UInt64,1} UInt64 61 7.169400e-10 5.378960e-09 2.711100e-05 5.254660e-04 0.000094 0.019460
117 IntArrays.IntArray{62,UInt64,1} UInt64 62 7.720800e-10 5.374430e-09 2.757000e-05 1.126861e-03 0.000354 0.018031
118 IntArrays.IntArray{63,UInt64,1} UInt64 63 6.475900e-10 5.444140e-09 2.796600e-05 5.505000e-04 0.000092 0.019187
119 IntArrays.IntArray{64,UInt64,1} UInt64 64 6.475600e-10 1.741440e-09 2.842500e-05 3.521100e-05 0.000371 0.004289

In [ ]: