Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 2eb2c7c

Browse files
committed
#2435: missing file in pybench
svnmerge seems to forget every added file.
1 parent d24a5b6 commit 2eb2c7c

1 file changed

Lines changed: 190 additions & 0 deletions

File tree

Tools/pybench/With.py

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

0 commit comments

Comments
 (0)