| 
									
										
										
										
											2008-03-20 21:22:04 +00:00
										 |  |  | from pybench import Test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class WithFinally(Test): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     version = 2.0 | 
					
						
							|  |  |  |     operations = 20 | 
					
						
							|  |  |  |     rounds = 80000 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     class ContextManager(object): | 
					
						
							|  |  |  |         def __enter__(self): | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  |         def __exit__(self, exc, val, tb): | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test(self): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         cm = self.ContextManager() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-16 17:02:34 +00:00
										 |  |  |         for i in range(self.rounds): | 
					
						
							| 
									
										
										
										
											2008-03-20 21:22:04 +00:00
										 |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  |             with cm: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def calibrate(self): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         cm = self.ContextManager() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-16 17:02:34 +00:00
										 |  |  |         for i in range(self.rounds): | 
					
						
							| 
									
										
										
										
											2008-03-20 21:22:04 +00:00
										 |  |  |             pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TryFinally(Test): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     version = 2.0 | 
					
						
							|  |  |  |     operations = 20 | 
					
						
							|  |  |  |     rounds = 80000 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     class ContextManager(object): | 
					
						
							|  |  |  |         def __enter__(self): | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  |         def __exit__(self): | 
					
						
							|  |  |  |             # "Context manager" objects used just for their cleanup | 
					
						
							|  |  |  |             # actions in finally blocks usually don't have parameters. | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test(self): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         cm = self.ContextManager() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-16 17:02:34 +00:00
										 |  |  |         for i in range(self.rounds): | 
					
						
							| 
									
										
										
										
											2008-03-20 21:22:04 +00:00
										 |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             cm.__enter__() | 
					
						
							|  |  |  |             try: pass | 
					
						
							|  |  |  |             finally: cm.__exit__() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def calibrate(self): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         cm = self.ContextManager() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-16 17:02:34 +00:00
										 |  |  |         for i in range(self.rounds): | 
					
						
							| 
									
										
										
										
											2008-03-20 21:22:04 +00:00
										 |  |  |             pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class WithRaiseExcept(Test): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     version = 2.0 | 
					
						
							|  |  |  |     operations = 2 + 3 + 3 | 
					
						
							|  |  |  |     rounds = 100000 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     class BlockExceptions(object): | 
					
						
							|  |  |  |         def __enter__(self): | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  |         def __exit__(self, exc, val, tb): | 
					
						
							|  |  |  |             return True | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test(self): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         error = ValueError | 
					
						
							|  |  |  |         be = self.BlockExceptions() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-16 17:02:34 +00:00
										 |  |  |         for i in range(self.rounds): | 
					
						
							| 
									
										
										
										
											2008-03-20 21:22:04 +00:00
										 |  |  |             with be: raise error | 
					
						
							|  |  |  |             with be: raise error | 
					
						
							| 
									
										
										
										
											2008-05-16 17:02:34 +00:00
										 |  |  |             with be: raise error("something") | 
					
						
							|  |  |  |             with be: raise error("something") | 
					
						
							|  |  |  |             with be: raise error("something") | 
					
						
							| 
									
										
										
										
											2008-03-20 21:22:04 +00:00
										 |  |  |             with be: raise error("something") | 
					
						
							|  |  |  |             with be: raise error("something") | 
					
						
							|  |  |  |             with be: raise error("something") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def calibrate(self): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         error = ValueError | 
					
						
							|  |  |  |         be = self.BlockExceptions() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-16 17:02:34 +00:00
										 |  |  |         for i in range(self.rounds): | 
					
						
							| 
									
										
										
										
											2008-03-20 21:22:04 +00:00
										 |  |  |             pass |