PageRenderTime 38ms CodeModel.GetById 18ms app.highlight 17ms RepoModel.GetById 1ms app.codeStats 0ms

/Tools/pybench/Lists.py

http://unladen-swallow.googlecode.com/
Python | 350 lines | 264 code | 85 blank | 1 comment | 73 complexity | d411c565703977dfb74397434368fac3 MD5 | raw file
  1from pybench import Test
  2
  3class SimpleListManipulation(Test):
  4
  5    version = 2.0
  6    operations = 5* (6 + 6 + 6)
  7    rounds = 130000
  8
  9    def test(self):
 10
 11        l = []
 12        append = l.append
 13
 14        for i in xrange(self.rounds):
 15
 16            append(2)
 17            append(3)
 18            append(4)
 19            append(2)
 20            append(3)
 21            append(4)
 22
 23            l[0] = 3
 24            l[1] = 4
 25            l[2] = 5
 26            l[3] = 3
 27            l[4] = 4
 28            l[5] = 5
 29
 30            x = l[0]
 31            x = l[1]
 32            x = l[2]
 33            x = l[3]
 34            x = l[4]
 35            x = l[5]
 36
 37            append(2)
 38            append(3)
 39            append(4)
 40            append(2)
 41            append(3)
 42            append(4)
 43
 44            l[0] = 3
 45            l[1] = 4
 46            l[2] = 5
 47            l[3] = 3
 48            l[4] = 4
 49            l[5] = 5
 50
 51            x = l[0]
 52            x = l[1]
 53            x = l[2]
 54            x = l[3]
 55            x = l[4]
 56            x = l[5]
 57
 58            append(2)
 59            append(3)
 60            append(4)
 61            append(2)
 62            append(3)
 63            append(4)
 64
 65            l[0] = 3
 66            l[1] = 4
 67            l[2] = 5
 68            l[3] = 3
 69            l[4] = 4
 70            l[5] = 5
 71
 72            x = l[0]
 73            x = l[1]
 74            x = l[2]
 75            x = l[3]
 76            x = l[4]
 77            x = l[5]
 78
 79            append(2)
 80            append(3)
 81            append(4)
 82            append(2)
 83            append(3)
 84            append(4)
 85
 86            l[0] = 3
 87            l[1] = 4
 88            l[2] = 5
 89            l[3] = 3
 90            l[4] = 4
 91            l[5] = 5
 92
 93            x = l[0]
 94            x = l[1]
 95            x = l[2]
 96            x = l[3]
 97            x = l[4]
 98            x = l[5]
 99
100            append(2)
101            append(3)
102            append(4)
103            append(2)
104            append(3)
105            append(4)
106
107            l[0] = 3
108            l[1] = 4
109            l[2] = 5
110            l[3] = 3
111            l[4] = 4
112            l[5] = 5
113
114            x = l[0]
115            x = l[1]
116            x = l[2]
117            x = l[3]
118            x = l[4]
119            x = l[5]
120
121            if len(l) > 10000:
122                # cut down the size
123                del l[:]
124
125    def calibrate(self):
126
127        l = []
128        append = l.append
129
130        for i in xrange(self.rounds):
131            pass
132
133class ListSlicing(Test):
134
135    version = 2.0
136    operations = 25*(3+1+2+1)
137    rounds = 800
138
139    def test(self):
140
141        n = range(100)
142        r = range(25)
143
144        for i in xrange(self.rounds):
145
146            l = n[:]
147
148            for j in r:
149
150                m = l[50:]
151                m = l[:25]
152                m = l[50:55]
153                l[:3] = n
154                m = l[:-1]
155                m = l[1:]
156                l[-1:] = n
157
158    def calibrate(self):
159
160        n = range(100)
161        r = range(25)
162
163        for i in xrange(self.rounds):
164            for j in r:
165                pass
166
167class SmallLists(Test):
168
169    version = 2.0
170    operations = 5*(1+ 6 + 6 + 3 + 1)
171    rounds = 80000
172
173    def test(self):
174
175        for i in xrange(self.rounds):
176
177            l = []
178
179            append = l.append
180            append(2)
181            append(3)
182            append(4)
183            append(2)
184            append(3)
185            append(4)
186
187            l[0] = 3
188            l[1] = 4
189            l[2] = 5
190            l[3] = 3
191            l[4] = 4
192            l[5] = 5
193
194            l[:3] = [1,2,3]
195            m = l[:-1]
196            m = l[1:]
197
198            l[-1:] = [4,5,6]
199
200            l = []
201
202            append = l.append
203            append(2)
204            append(3)
205            append(4)
206            append(2)
207            append(3)
208            append(4)
209
210            l[0] = 3
211            l[1] = 4
212            l[2] = 5
213            l[3] = 3
214            l[4] = 4
215            l[5] = 5
216
217            l[:3] = [1,2,3]
218            m = l[:-1]
219            m = l[1:]
220
221            l[-1:] = [4,5,6]
222
223            l = []
224
225            append = l.append
226            append(2)
227            append(3)
228            append(4)
229            append(2)
230            append(3)
231            append(4)
232
233            l[0] = 3
234            l[1] = 4
235            l[2] = 5
236            l[3] = 3
237            l[4] = 4
238            l[5] = 5
239
240            l[:3] = [1,2,3]
241            m = l[:-1]
242            m = l[1:]
243
244            l[-1:] = [4,5,6]
245
246            l = []
247
248            append = l.append
249            append(2)
250            append(3)
251            append(4)
252            append(2)
253            append(3)
254            append(4)
255
256            l[0] = 3
257            l[1] = 4
258            l[2] = 5
259            l[3] = 3
260            l[4] = 4
261            l[5] = 5
262
263            l[:3] = [1,2,3]
264            m = l[:-1]
265            m = l[1:]
266
267            l[-1:] = [4,5,6]
268
269            l = []
270
271            append = l.append
272            append(2)
273            append(3)
274            append(4)
275            append(2)
276            append(3)
277            append(4)
278
279            l[0] = 3
280            l[1] = 4
281            l[2] = 5
282            l[3] = 3
283            l[4] = 4
284            l[5] = 5
285
286            l[:3] = [1,2,3]
287            m = l[:-1]
288            m = l[1:]
289
290            l[-1:] = [4,5,6]
291
292    def calibrate(self):
293
294        for i in xrange(self.rounds):
295            pass
296
297class SimpleListComprehensions(Test):
298
299    version = 2.0
300    operations = 6
301    rounds = 20000
302
303    def test(self):
304
305        n = range(10) * 10
306
307        for i in xrange(self.rounds):
308            l = [x for x in n]
309            l = [x for x in n if x]
310            l = [x for x in n if not x]
311
312            l = [x for x in n]
313            l = [x for x in n if x]
314            l = [x for x in n if not x]
315
316    def calibrate(self):
317
318        n = range(10) * 10
319
320        for i in xrange(self.rounds):
321            pass
322
323class NestedListComprehensions(Test):
324
325    version = 2.0
326    operations = 6
327    rounds = 20000
328
329    def test(self):
330
331        m = range(10)
332        n = range(10)
333
334        for i in xrange(self.rounds):
335            l = [x for x in n for y in m]
336            l = [y for x in n for y in m]
337
338            l = [x for x in n for y in m if y]
339            l = [y for x in n for y in m if x]
340
341            l = [x for x in n for y in m if not y]
342            l = [y for x in n for y in m if not x]
343
344    def calibrate(self):
345
346        m = range(10)
347        n = range(10)
348
349        for i in xrange(self.rounds):
350            pass