]> git.proxmox.com Git - mirror_edk2.git/blame - AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Strings.py
EmbeddedPkg: Extend NvVarStoreFormattedLib LIBRARY_CLASS
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Tools / pybench / Strings.py
CommitLineData
4710c53d 1from pybench import Test\r
2from string import join\r
3\r
4class ConcatStrings(Test):\r
5\r
6 version = 2.0\r
7 operations = 10 * 5\r
8 rounds = 100000\r
9\r
10 def test(self):\r
11\r
12 # Make sure the strings are *not* interned\r
13 s = join(map(str,range(100)))\r
14 t = join(map(str,range(1,101)))\r
15\r
16 for i in xrange(self.rounds):\r
17 t + s\r
18 t + s\r
19 t + s\r
20 t + s\r
21 t + s\r
22\r
23 t + s\r
24 t + s\r
25 t + s\r
26 t + s\r
27 t + s\r
28\r
29 t + s\r
30 t + s\r
31 t + s\r
32 t + s\r
33 t + s\r
34\r
35 t + s\r
36 t + s\r
37 t + s\r
38 t + s\r
39 t + s\r
40\r
41 t + s\r
42 t + s\r
43 t + s\r
44 t + s\r
45 t + s\r
46\r
47 t + s\r
48 t + s\r
49 t + s\r
50 t + s\r
51 t + s\r
52\r
53 t + s\r
54 t + s\r
55 t + s\r
56 t + s\r
57 t + s\r
58\r
59 t + s\r
60 t + s\r
61 t + s\r
62 t + s\r
63 t + s\r
64\r
65 t + s\r
66 t + s\r
67 t + s\r
68 t + s\r
69 t + s\r
70\r
71 t + s\r
72 t + s\r
73 t + s\r
74 t + s\r
75 t + s\r
76\r
77 def calibrate(self):\r
78\r
79 s = join(map(str,range(100)))\r
80 t = join(map(str,range(1,101)))\r
81\r
82 for i in xrange(self.rounds):\r
83 pass\r
84\r
85\r
86class CompareStrings(Test):\r
87\r
88 version = 2.0\r
89 operations = 10 * 5\r
90 rounds = 200000\r
91\r
92 def test(self):\r
93\r
94 # Make sure the strings are *not* interned\r
95 s = join(map(str,range(10)))\r
96 t = join(map(str,range(10))) + "abc"\r
97\r
98 for i in xrange(self.rounds):\r
99 t < s\r
100 t > s\r
101 t == s\r
102 t > s\r
103 t < s\r
104\r
105 t < s\r
106 t > s\r
107 t == s\r
108 t > s\r
109 t < s\r
110\r
111 t < s\r
112 t > s\r
113 t == s\r
114 t > s\r
115 t < s\r
116\r
117 t < s\r
118 t > s\r
119 t == s\r
120 t > s\r
121 t < s\r
122\r
123 t < s\r
124 t > s\r
125 t == s\r
126 t > s\r
127 t < s\r
128\r
129 t < s\r
130 t > s\r
131 t == s\r
132 t > s\r
133 t < s\r
134\r
135 t < s\r
136 t > s\r
137 t == s\r
138 t > s\r
139 t < s\r
140\r
141 t < s\r
142 t > s\r
143 t == s\r
144 t > s\r
145 t < s\r
146\r
147 t < s\r
148 t > s\r
149 t == s\r
150 t > s\r
151 t < s\r
152\r
153 t < s\r
154 t > s\r
155 t == s\r
156 t > s\r
157 t < s\r
158\r
159 def calibrate(self):\r
160\r
161 s = join(map(str,range(10)))\r
162 t = join(map(str,range(10))) + "abc"\r
163\r
164 for i in xrange(self.rounds):\r
165 pass\r
166\r
167\r
168class CompareInternedStrings(Test):\r
169\r
170 version = 2.0\r
171 operations = 10 * 5\r
172 rounds = 300000\r
173\r
174 def test(self):\r
175\r
176 # Make sure the strings *are* interned\r
177 s = intern(join(map(str,range(10))))\r
178 t = s\r
179\r
180 for i in xrange(self.rounds):\r
181 t == s\r
182 t == s\r
183 t >= s\r
184 t > s\r
185 t < s\r
186\r
187 t == s\r
188 t == s\r
189 t >= s\r
190 t > s\r
191 t < s\r
192\r
193 t == s\r
194 t == s\r
195 t >= s\r
196 t > s\r
197 t < s\r
198\r
199 t == s\r
200 t == s\r
201 t >= s\r
202 t > s\r
203 t < s\r
204\r
205 t == s\r
206 t == s\r
207 t >= s\r
208 t > s\r
209 t < s\r
210\r
211 t == s\r
212 t == s\r
213 t >= s\r
214 t > s\r
215 t < s\r
216\r
217 t == s\r
218 t == s\r
219 t >= s\r
220 t > s\r
221 t < s\r
222\r
223 t == s\r
224 t == s\r
225 t >= s\r
226 t > s\r
227 t < s\r
228\r
229 t == s\r
230 t == s\r
231 t >= s\r
232 t > s\r
233 t < s\r
234\r
235 t == s\r
236 t == s\r
237 t >= s\r
238 t > s\r
239 t < s\r
240\r
241 def calibrate(self):\r
242\r
243 s = intern(join(map(str,range(10))))\r
244 t = s\r
245\r
246 for i in xrange(self.rounds):\r
247 pass\r
248\r
249\r
250class CreateStringsWithConcat(Test):\r
251\r
252 version = 2.0\r
253 operations = 10 * 5\r
254 rounds = 200000\r
255\r
256 def test(self):\r
257\r
258 for i in xrange(self.rounds):\r
259 s = 'om'\r
260 s = s + 'xbx'\r
261 s = s + 'xcx'\r
262 s = s + 'xdx'\r
263 s = s + 'xex'\r
264\r
265 s = s + 'xax'\r
266 s = s + 'xbx'\r
267 s = s + 'xcx'\r
268 s = s + 'xdx'\r
269 s = s + 'xex'\r
270\r
271 s = s + 'xax'\r
272 s = s + 'xbx'\r
273 s = s + 'xcx'\r
274 s = s + 'xdx'\r
275 s = s + 'xex'\r
276\r
277 s = s + 'xax'\r
278 s = s + 'xbx'\r
279 s = s + 'xcx'\r
280 s = s + 'xdx'\r
281 s = s + 'xex'\r
282\r
283 s = s + 'xax'\r
284 s = s + 'xbx'\r
285 s = s + 'xcx'\r
286 s = s + 'xdx'\r
287 s = s + 'xex'\r
288\r
289 s = s + 'xax'\r
290 s = s + 'xbx'\r
291 s = s + 'xcx'\r
292 s = s + 'xdx'\r
293 s = s + 'xex'\r
294\r
295 s = s + 'xax'\r
296 s = s + 'xbx'\r
297 s = s + 'xcx'\r
298 s = s + 'xdx'\r
299 s = s + 'xex'\r
300\r
301 s = s + 'xax'\r
302 s = s + 'xbx'\r
303 s = s + 'xcx'\r
304 s = s + 'xdx'\r
305 s = s + 'xex'\r
306\r
307 s = s + 'xax'\r
308 s = s + 'xbx'\r
309 s = s + 'xcx'\r
310 s = s + 'xdx'\r
311 s = s + 'xex'\r
312\r
313 s = s + 'xax'\r
314 s = s + 'xbx'\r
315 s = s + 'xcx'\r
316 s = s + 'xdx'\r
317 s = s + 'xex'\r
318\r
319 def calibrate(self):\r
320\r
321 for i in xrange(self.rounds):\r
322 pass\r
323\r
324\r
325class StringSlicing(Test):\r
326\r
327 version = 2.0\r
328 operations = 5 * 7\r
329 rounds = 160000\r
330\r
331 def test(self):\r
332\r
333 s = join(map(str,range(100)))\r
334\r
335 for i in xrange(self.rounds):\r
336\r
337 s[50:]\r
338 s[:25]\r
339 s[50:55]\r
340 s[-1:]\r
341 s[:1]\r
342 s[2:]\r
343 s[11:-11]\r
344\r
345 s[50:]\r
346 s[:25]\r
347 s[50:55]\r
348 s[-1:]\r
349 s[:1]\r
350 s[2:]\r
351 s[11:-11]\r
352\r
353 s[50:]\r
354 s[:25]\r
355 s[50:55]\r
356 s[-1:]\r
357 s[:1]\r
358 s[2:]\r
359 s[11:-11]\r
360\r
361 s[50:]\r
362 s[:25]\r
363 s[50:55]\r
364 s[-1:]\r
365 s[:1]\r
366 s[2:]\r
367 s[11:-11]\r
368\r
369 s[50:]\r
370 s[:25]\r
371 s[50:55]\r
372 s[-1:]\r
373 s[:1]\r
374 s[2:]\r
375 s[11:-11]\r
376\r
377 def calibrate(self):\r
378\r
379 s = join(map(str,range(100)))\r
380\r
381 for i in xrange(self.rounds):\r
382 pass\r
383\r
384### String methods\r
385\r
386if hasattr('', 'lower'):\r
387\r
388 class StringMappings(Test):\r
389\r
390 version = 2.0\r
391 operations = 3 * (5 + 4 + 2 + 1)\r
392 rounds = 70000\r
393\r
394 def test(self):\r
395\r
396 s = join(map(chr,range(20)),'')\r
397 t = join(map(chr,range(50)),'')\r
398 u = join(map(chr,range(100)),'')\r
399 v = join(map(chr,range(256)),'')\r
400\r
401 for i in xrange(self.rounds):\r
402\r
403 s.lower()\r
404 s.lower()\r
405 s.lower()\r
406 s.lower()\r
407 s.lower()\r
408\r
409 s.upper()\r
410 s.upper()\r
411 s.upper()\r
412 s.upper()\r
413 s.upper()\r
414\r
415 s.title()\r
416 s.title()\r
417 s.title()\r
418 s.title()\r
419 s.title()\r
420\r
421 t.lower()\r
422 t.lower()\r
423 t.lower()\r
424 t.lower()\r
425\r
426 t.upper()\r
427 t.upper()\r
428 t.upper()\r
429 t.upper()\r
430\r
431 t.title()\r
432 t.title()\r
433 t.title()\r
434 t.title()\r
435\r
436 u.lower()\r
437 u.lower()\r
438\r
439 u.upper()\r
440 u.upper()\r
441\r
442 u.title()\r
443 u.title()\r
444\r
445 v.lower()\r
446\r
447 v.upper()\r
448\r
449 v.title()\r
450\r
451 def calibrate(self):\r
452\r
453 s = join(map(chr,range(20)),'')\r
454 t = join(map(chr,range(50)),'')\r
455 u = join(map(chr,range(100)),'')\r
456 v = join(map(chr,range(256)),'')\r
457\r
458 for i in xrange(self.rounds):\r
459 pass\r
460\r
461 class StringPredicates(Test):\r
462\r
463 version = 2.0\r
464 operations = 10 * 7\r
465 rounds = 100000\r
466\r
467 def test(self):\r
468\r
469 data = ('abc', '123', ' ', '\xe4\xf6\xfc', '\xdf'*10)\r
470 len_data = len(data)\r
471\r
472 for i in xrange(self.rounds):\r
473 s = data[i % len_data]\r
474\r
475 s.isalnum()\r
476 s.isalpha()\r
477 s.isdigit()\r
478 s.islower()\r
479 s.isspace()\r
480 s.istitle()\r
481 s.isupper()\r
482\r
483 s.isalnum()\r
484 s.isalpha()\r
485 s.isdigit()\r
486 s.islower()\r
487 s.isspace()\r
488 s.istitle()\r
489 s.isupper()\r
490\r
491 s.isalnum()\r
492 s.isalpha()\r
493 s.isdigit()\r
494 s.islower()\r
495 s.isspace()\r
496 s.istitle()\r
497 s.isupper()\r
498\r
499 s.isalnum()\r
500 s.isalpha()\r
501 s.isdigit()\r
502 s.islower()\r
503 s.isspace()\r
504 s.istitle()\r
505 s.isupper()\r
506\r
507 s.isalnum()\r
508 s.isalpha()\r
509 s.isdigit()\r
510 s.islower()\r
511 s.isspace()\r
512 s.istitle()\r
513 s.isupper()\r
514\r
515 s.isalnum()\r
516 s.isalpha()\r
517 s.isdigit()\r
518 s.islower()\r
519 s.isspace()\r
520 s.istitle()\r
521 s.isupper()\r
522\r
523 s.isalnum()\r
524 s.isalpha()\r
525 s.isdigit()\r
526 s.islower()\r
527 s.isspace()\r
528 s.istitle()\r
529 s.isupper()\r
530\r
531 s.isalnum()\r
532 s.isalpha()\r
533 s.isdigit()\r
534 s.islower()\r
535 s.isspace()\r
536 s.istitle()\r
537 s.isupper()\r
538\r
539 s.isalnum()\r
540 s.isalpha()\r
541 s.isdigit()\r
542 s.islower()\r
543 s.isspace()\r
544 s.istitle()\r
545 s.isupper()\r
546\r
547 s.isalnum()\r
548 s.isalpha()\r
549 s.isdigit()\r
550 s.islower()\r
551 s.isspace()\r
552 s.istitle()\r
553 s.isupper()\r
554\r
555 def calibrate(self):\r
556\r
557 data = ('abc', '123', ' ', '\u1234\u2345\u3456', '\uFFFF'*10)\r
558 data = ('abc', '123', ' ', '\xe4\xf6\xfc', '\xdf'*10)\r
559 len_data = len(data)\r
560\r
561 for i in xrange(self.rounds):\r
562 s = data[i % len_data]\r