]> git.proxmox.com Git - mirror_edk2.git/blame - AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/With.py
EmbeddedPkg: Extend NvVarStoreFormattedLib LIBRARY_CLASS
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Tools / pybench / With.py
CommitLineData
4710c53d 1from __future__ import with_statement\r
2from pybench import Test\r
3\r
4class WithFinally(Test):\r
5\r
6 version = 2.0\r
7 operations = 20\r
8 rounds = 80000\r
9\r
10 class ContextManager(object):\r
11 def __enter__(self):\r
12 pass\r
13 def __exit__(self, exc, val, tb):\r
14 pass\r
15\r
16 def test(self):\r
17\r
18 cm = self.ContextManager()\r
19\r
20 for i in xrange(self.rounds):\r
21 with cm: pass\r
22 with cm: pass\r
23 with cm: pass\r
24 with cm: pass\r
25 with cm: pass\r
26 with cm: pass\r
27 with cm: pass\r
28 with cm: pass\r
29 with cm: pass\r
30 with cm: pass\r
31 with cm: pass\r
32 with cm: pass\r
33 with cm: pass\r
34 with cm: pass\r
35 with cm: pass\r
36 with cm: pass\r
37 with cm: pass\r
38 with cm: pass\r
39 with cm: pass\r
40 with cm: pass\r
41\r
42 def calibrate(self):\r
43\r
44 cm = self.ContextManager()\r
45\r
46 for i in xrange(self.rounds):\r
47 pass\r
48\r
49\r
50class TryFinally(Test):\r
51\r
52 version = 2.0\r
53 operations = 20\r
54 rounds = 80000\r
55\r
56 class ContextManager(object):\r
57 def __enter__(self):\r
58 pass\r
59 def __exit__(self):\r
60 # "Context manager" objects used just for their cleanup\r
61 # actions in finally blocks usually don't have parameters.\r
62 pass\r
63\r
64 def test(self):\r
65\r
66 cm = self.ContextManager()\r
67\r
68 for i in xrange(self.rounds):\r
69 cm.__enter__()\r
70 try: pass\r
71 finally: cm.__exit__()\r
72\r
73 cm.__enter__()\r
74 try: pass\r
75 finally: cm.__exit__()\r
76\r
77 cm.__enter__()\r
78 try: pass\r
79 finally: cm.__exit__()\r
80\r
81 cm.__enter__()\r
82 try: pass\r
83 finally: cm.__exit__()\r
84\r
85 cm.__enter__()\r
86 try: pass\r
87 finally: cm.__exit__()\r
88\r
89 cm.__enter__()\r
90 try: pass\r
91 finally: cm.__exit__()\r
92\r
93 cm.__enter__()\r
94 try: pass\r
95 finally: cm.__exit__()\r
96\r
97 cm.__enter__()\r
98 try: pass\r
99 finally: cm.__exit__()\r
100\r
101 cm.__enter__()\r
102 try: pass\r
103 finally: cm.__exit__()\r
104\r
105 cm.__enter__()\r
106 try: pass\r
107 finally: cm.__exit__()\r
108\r
109 cm.__enter__()\r
110 try: pass\r
111 finally: cm.__exit__()\r
112\r
113 cm.__enter__()\r
114 try: pass\r
115 finally: cm.__exit__()\r
116\r
117 cm.__enter__()\r
118 try: pass\r
119 finally: cm.__exit__()\r
120\r
121 cm.__enter__()\r
122 try: pass\r
123 finally: cm.__exit__()\r
124\r
125 cm.__enter__()\r
126 try: pass\r
127 finally: cm.__exit__()\r
128\r
129 cm.__enter__()\r
130 try: pass\r
131 finally: cm.__exit__()\r
132\r
133 cm.__enter__()\r
134 try: pass\r
135 finally: cm.__exit__()\r
136\r
137 cm.__enter__()\r
138 try: pass\r
139 finally: cm.__exit__()\r
140\r
141 cm.__enter__()\r
142 try: pass\r
143 finally: cm.__exit__()\r
144\r
145 cm.__enter__()\r
146 try: pass\r
147 finally: cm.__exit__()\r
148\r
149 def calibrate(self):\r
150\r
151 cm = self.ContextManager()\r
152\r
153 for i in xrange(self.rounds):\r
154 pass\r
155\r
156\r
157class WithRaiseExcept(Test):\r
158\r
159 version = 2.0\r
160 operations = 2 + 3 + 3\r
161 rounds = 100000\r
162\r
163 class BlockExceptions(object):\r
164 def __enter__(self):\r
165 pass\r
166 def __exit__(self, exc, val, tb):\r
167 return True\r
168\r
169 def test(self):\r
170\r
171 error = ValueError\r
172 be = self.BlockExceptions()\r
173\r
174 for i in xrange(self.rounds):\r
175 with be: raise error\r
176 with be: raise error\r
177 with be: raise error,"something"\r
178 with be: raise error,"something"\r
179 with be: raise error,"something"\r
180 with be: raise error("something")\r
181 with be: raise error("something")\r
182 with be: raise error("something")\r
183\r
184 def calibrate(self):\r
185\r
186 error = ValueError\r
187 be = self.BlockExceptions()\r
188\r
189 for i in xrange(self.rounds):\r
190 pass\r