blob: 575758bfc2d12d7b8c7f523277ec54d5b2daf195 [file] [log] [blame]
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001from pybench import Test
2
3class DictCreation(Test):
4
Thomas Wouters0e3f5912006-08-11 14:57:12 +00005 version = 2.0
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00006 operations = 5*(5 + 5)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00007 rounds = 80000
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00008
9 def test(self):
10
Guido van Rossum805365e2007-05-07 22:24:25 +000011 for i in range(self.rounds):
Thomas Wouters49fd7fa2006-04-21 10:40:58 +000012
13 d1 = {}
14 d2 = {}
15 d3 = {}
16 d4 = {}
17 d5 = {}
18
19 d1 = {1:2,3:4,5:6}
20 d2 = {2:3,4:5,6:7}
21 d3 = {3:4,5:6,7:8}
22 d4 = {4:5,6:7,8:9}
23 d5 = {6:7,8:9,10:11}
24
25 d1 = {}
26 d2 = {}
27 d3 = {}
28 d4 = {}
29 d5 = {}
30
31 d1 = {1:2,3:4,5:6}
32 d2 = {2:3,4:5,6:7}
33 d3 = {3:4,5:6,7:8}
34 d4 = {4:5,6:7,8:9}
35 d5 = {6:7,8:9,10:11}
36
37 d1 = {}
38 d2 = {}
39 d3 = {}
40 d4 = {}
41 d5 = {}
42
43 d1 = {1:2,3:4,5:6}
44 d2 = {2:3,4:5,6:7}
45 d3 = {3:4,5:6,7:8}
46 d4 = {4:5,6:7,8:9}
47 d5 = {6:7,8:9,10:11}
48
49 d1 = {}
50 d2 = {}
51 d3 = {}
52 d4 = {}
53 d5 = {}
54
55 d1 = {1:2,3:4,5:6}
56 d2 = {2:3,4:5,6:7}
57 d3 = {3:4,5:6,7:8}
58 d4 = {4:5,6:7,8:9}
59 d5 = {6:7,8:9,10:11}
60
61 d1 = {}
62 d2 = {}
63 d3 = {}
64 d4 = {}
65 d5 = {}
66
67 d1 = {1:2,3:4,5:6}
68 d2 = {2:3,4:5,6:7}
69 d3 = {3:4,5:6,7:8}
70 d4 = {4:5,6:7,8:9}
71 d5 = {6:7,8:9,10:11}
72
73 def calibrate(self):
74
Guido van Rossum805365e2007-05-07 22:24:25 +000075 for i in range(self.rounds):
Thomas Wouters49fd7fa2006-04-21 10:40:58 +000076 pass
77
78class DictWithStringKeys(Test):
79
Thomas Wouters0e3f5912006-08-11 14:57:12 +000080 version = 2.0
Thomas Wouters49fd7fa2006-04-21 10:40:58 +000081 operations = 5*(6 + 6)
82 rounds = 200000
83
84 def test(self):
85
86 d = {}
87
Guido van Rossum805365e2007-05-07 22:24:25 +000088 for i in range(self.rounds):
Thomas Wouters49fd7fa2006-04-21 10:40:58 +000089
90 d['abc'] = 1
91 d['def'] = 2
92 d['ghi'] = 3
93 d['jkl'] = 4
94 d['mno'] = 5
95 d['pqr'] = 6
Thomas Wouters477c8d52006-05-27 19:21:47 +000096
Thomas Wouters49fd7fa2006-04-21 10:40:58 +000097 d['abc']
98 d['def']
99 d['ghi']
100 d['jkl']
101 d['mno']
102 d['pqr']
Thomas Wouters477c8d52006-05-27 19:21:47 +0000103
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000104 d['abc'] = 1
105 d['def'] = 2
106 d['ghi'] = 3
107 d['jkl'] = 4
108 d['mno'] = 5
109 d['pqr'] = 6
Thomas Wouters477c8d52006-05-27 19:21:47 +0000110
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000111 d['abc']
112 d['def']
113 d['ghi']
114 d['jkl']
115 d['mno']
116 d['pqr']
Thomas Wouters477c8d52006-05-27 19:21:47 +0000117
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000118 d['abc'] = 1
119 d['def'] = 2
120 d['ghi'] = 3
121 d['jkl'] = 4
122 d['mno'] = 5
123 d['pqr'] = 6
Thomas Wouters477c8d52006-05-27 19:21:47 +0000124
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000125 d['abc']
126 d['def']
127 d['ghi']
128 d['jkl']
129 d['mno']
130 d['pqr']
Thomas Wouters477c8d52006-05-27 19:21:47 +0000131
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000132 d['abc'] = 1
133 d['def'] = 2
134 d['ghi'] = 3
135 d['jkl'] = 4
136 d['mno'] = 5
137 d['pqr'] = 6
Thomas Wouters477c8d52006-05-27 19:21:47 +0000138
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000139 d['abc']
140 d['def']
141 d['ghi']
142 d['jkl']
143 d['mno']
144 d['pqr']
Thomas Wouters477c8d52006-05-27 19:21:47 +0000145
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000146 d['abc'] = 1
147 d['def'] = 2
148 d['ghi'] = 3
149 d['jkl'] = 4
150 d['mno'] = 5
151 d['pqr'] = 6
Thomas Wouters477c8d52006-05-27 19:21:47 +0000152
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000153 d['abc']
154 d['def']
155 d['ghi']
156 d['jkl']
157 d['mno']
158 d['pqr']
Thomas Wouters477c8d52006-05-27 19:21:47 +0000159
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000160 def calibrate(self):
161
162 d = {}
163
Guido van Rossum805365e2007-05-07 22:24:25 +0000164 for i in range(self.rounds):
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000165 pass
166
167class DictWithFloatKeys(Test):
168
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000169 version = 2.0
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000170 operations = 5*(6 + 6)
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000171 rounds = 150000
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000172
173 def test(self):
174
175 d = {}
176
Guido van Rossum805365e2007-05-07 22:24:25 +0000177 for i in range(self.rounds):
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000178
179 d[1.234] = 1
180 d[2.345] = 2
181 d[3.456] = 3
182 d[4.567] = 4
183 d[5.678] = 5
184 d[6.789] = 6
Thomas Wouters477c8d52006-05-27 19:21:47 +0000185
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000186 d[1.234]
187 d[2.345]
188 d[3.456]
189 d[4.567]
190 d[5.678]
191 d[6.789]
Thomas Wouters477c8d52006-05-27 19:21:47 +0000192
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000193 d[1.234] = 1
194 d[2.345] = 2
195 d[3.456] = 3
196 d[4.567] = 4
197 d[5.678] = 5
198 d[6.789] = 6
Thomas Wouters477c8d52006-05-27 19:21:47 +0000199
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000200 d[1.234]
201 d[2.345]
202 d[3.456]
203 d[4.567]
204 d[5.678]
205 d[6.789]
Thomas Wouters477c8d52006-05-27 19:21:47 +0000206
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000207 d[1.234] = 1
208 d[2.345] = 2
209 d[3.456] = 3
210 d[4.567] = 4
211 d[5.678] = 5
212 d[6.789] = 6
Thomas Wouters477c8d52006-05-27 19:21:47 +0000213
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000214 d[1.234]
215 d[2.345]
216 d[3.456]
217 d[4.567]
218 d[5.678]
219 d[6.789]
Thomas Wouters477c8d52006-05-27 19:21:47 +0000220
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000221 d[1.234] = 1
222 d[2.345] = 2
223 d[3.456] = 3
224 d[4.567] = 4
225 d[5.678] = 5
226 d[6.789] = 6
Thomas Wouters477c8d52006-05-27 19:21:47 +0000227
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000228 d[1.234]
229 d[2.345]
230 d[3.456]
231 d[4.567]
232 d[5.678]
233 d[6.789]
Thomas Wouters477c8d52006-05-27 19:21:47 +0000234
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000235 d[1.234] = 1
236 d[2.345] = 2
237 d[3.456] = 3
238 d[4.567] = 4
239 d[5.678] = 5
240 d[6.789] = 6
Thomas Wouters477c8d52006-05-27 19:21:47 +0000241
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000242 d[1.234]
243 d[2.345]
244 d[3.456]
245 d[4.567]
246 d[5.678]
247 d[6.789]
Thomas Wouters477c8d52006-05-27 19:21:47 +0000248
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000249 def calibrate(self):
250
251 d = {}
252
Guido van Rossum805365e2007-05-07 22:24:25 +0000253 for i in range(self.rounds):
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000254 pass
255
256class DictWithIntegerKeys(Test):
257
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000258 version = 2.0
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000259 operations = 5*(6 + 6)
260 rounds = 200000
261
262 def test(self):
263
264 d = {}
265
Guido van Rossum805365e2007-05-07 22:24:25 +0000266 for i in range(self.rounds):
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000267
268 d[1] = 1
269 d[2] = 2
270 d[3] = 3
271 d[4] = 4
272 d[5] = 5
273 d[6] = 6
Thomas Wouters477c8d52006-05-27 19:21:47 +0000274
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000275 d[1]
276 d[2]
277 d[3]
278 d[4]
279 d[5]
280 d[6]
Thomas Wouters477c8d52006-05-27 19:21:47 +0000281
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000282 d[1] = 1
283 d[2] = 2
284 d[3] = 3
285 d[4] = 4
286 d[5] = 5
287 d[6] = 6
Thomas Wouters477c8d52006-05-27 19:21:47 +0000288
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000289 d[1]
290 d[2]
291 d[3]
292 d[4]
293 d[5]
294 d[6]
Thomas Wouters477c8d52006-05-27 19:21:47 +0000295
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000296 d[1] = 1
297 d[2] = 2
298 d[3] = 3
299 d[4] = 4
300 d[5] = 5
301 d[6] = 6
Thomas Wouters477c8d52006-05-27 19:21:47 +0000302
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000303 d[1]
304 d[2]
305 d[3]
306 d[4]
307 d[5]
308 d[6]
Thomas Wouters477c8d52006-05-27 19:21:47 +0000309
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000310 d[1] = 1
311 d[2] = 2
312 d[3] = 3
313 d[4] = 4
314 d[5] = 5
315 d[6] = 6
Thomas Wouters477c8d52006-05-27 19:21:47 +0000316
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000317 d[1]
318 d[2]
319 d[3]
320 d[4]
321 d[5]
322 d[6]
Thomas Wouters477c8d52006-05-27 19:21:47 +0000323
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000324 d[1] = 1
325 d[2] = 2
326 d[3] = 3
327 d[4] = 4
328 d[5] = 5
329 d[6] = 6
Thomas Wouters477c8d52006-05-27 19:21:47 +0000330
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000331 d[1]
332 d[2]
333 d[3]
334 d[4]
335 d[5]
336 d[6]
Thomas Wouters477c8d52006-05-27 19:21:47 +0000337
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000338 def calibrate(self):
339
340 d = {}
341
Guido van Rossum805365e2007-05-07 22:24:25 +0000342 for i in range(self.rounds):
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000343 pass
344
345class SimpleDictManipulation(Test):
346
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000347 version = 2.0
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000348 operations = 5*(6 + 6 + 6 + 6)
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000349 rounds = 100000
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000350
351 def test(self):
352
353 d = {}
Guido van Rossum5b787e82007-01-13 23:54:39 +0000354 has_key = lambda key: key in d
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000355
Guido van Rossum805365e2007-05-07 22:24:25 +0000356 for i in range(self.rounds):
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000357
358 d[0] = 3
359 d[1] = 4
360 d[2] = 5
361 d[3] = 3
362 d[4] = 4
363 d[5] = 5
Thomas Wouters477c8d52006-05-27 19:21:47 +0000364
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000365 x = d[0]
366 x = d[1]
367 x = d[2]
368 x = d[3]
369 x = d[4]
370 x = d[5]
371
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000372 has_key(0)
373 has_key(2)
374 has_key(4)
375 has_key(6)
376 has_key(8)
377 has_key(10)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000378
379 del d[0]
380 del d[1]
381 del d[2]
382 del d[3]
383 del d[4]
384 del d[5]
385
386 d[0] = 3
387 d[1] = 4
388 d[2] = 5
389 d[3] = 3
390 d[4] = 4
391 d[5] = 5
Thomas Wouters477c8d52006-05-27 19:21:47 +0000392
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000393 x = d[0]
394 x = d[1]
395 x = d[2]
396 x = d[3]
397 x = d[4]
398 x = d[5]
399
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000400 has_key(0)
401 has_key(2)
402 has_key(4)
403 has_key(6)
404 has_key(8)
405 has_key(10)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000406
407 del d[0]
408 del d[1]
409 del d[2]
410 del d[3]
411 del d[4]
412 del d[5]
413
414 d[0] = 3
415 d[1] = 4
416 d[2] = 5
417 d[3] = 3
418 d[4] = 4
419 d[5] = 5
Thomas Wouters477c8d52006-05-27 19:21:47 +0000420
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000421 x = d[0]
422 x = d[1]
423 x = d[2]
424 x = d[3]
425 x = d[4]
426 x = d[5]
427
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000428 has_key(0)
429 has_key(2)
430 has_key(4)
431 has_key(6)
432 has_key(8)
433 has_key(10)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000434
435 del d[0]
436 del d[1]
437 del d[2]
438 del d[3]
439 del d[4]
440 del d[5]
441
442 d[0] = 3
443 d[1] = 4
444 d[2] = 5
445 d[3] = 3
446 d[4] = 4
447 d[5] = 5
Thomas Wouters477c8d52006-05-27 19:21:47 +0000448
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000449 x = d[0]
450 x = d[1]
451 x = d[2]
452 x = d[3]
453 x = d[4]
454 x = d[5]
455
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000456 has_key(0)
457 has_key(2)
458 has_key(4)
459 has_key(6)
460 has_key(8)
461 has_key(10)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000462
463 del d[0]
464 del d[1]
465 del d[2]
466 del d[3]
467 del d[4]
468 del d[5]
469
470 d[0] = 3
471 d[1] = 4
472 d[2] = 5
473 d[3] = 3
474 d[4] = 4
475 d[5] = 5
Thomas Wouters477c8d52006-05-27 19:21:47 +0000476
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000477 x = d[0]
478 x = d[1]
479 x = d[2]
480 x = d[3]
481 x = d[4]
482 x = d[5]
483
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000484 has_key(0)
485 has_key(2)
486 has_key(4)
487 has_key(6)
488 has_key(8)
489 has_key(10)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000490
491 del d[0]
492 del d[1]
493 del d[2]
494 del d[3]
495 del d[4]
496 del d[5]
497
498 def calibrate(self):
499
500 d = {}
Guido van Rossum5b787e82007-01-13 23:54:39 +0000501 has_key = lambda key: key in d
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000502
Guido van Rossum805365e2007-05-07 22:24:25 +0000503 for i in range(self.rounds):
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000504 pass