mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3 ........ r61730 | martin.v.loewis | 2008-03-22 02:20:58 +0100 (Sa, 22 Mär 2008) | 2 lines More explicit relative imports. ........ r61755 | david.wolever | 2008-03-22 21:33:52 +0100 (Sa, 22 Mär 2008) | 1 line Fixing #2446 -- 2to3 now translates 'import foo' to 'from . import foo' ........ r61824 | david.wolever | 2008-03-24 01:30:24 +0100 (Mo, 24 Mär 2008) | 3 lines Fixed a bug where 'from itertools import izip' would return 'from itertools import' ........
		
			
				
	
	
		
			58 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/usr/bin/env python2.5
 | 
						|
"""
 | 
						|
This is a benchmarking script to test the speed of 2to3's pattern matching
 | 
						|
system. It's equivalent to "refactor.py -f all" for every Python module
 | 
						|
in sys.modules, but without engaging the actual transformations.
 | 
						|
"""
 | 
						|
 | 
						|
__author__ = "Collin Winter <collinw at gmail.com>"
 | 
						|
 | 
						|
# Python imports
 | 
						|
import os.path
 | 
						|
import sys
 | 
						|
from time import time
 | 
						|
 | 
						|
# Test imports
 | 
						|
from .support import adjust_path
 | 
						|
adjust_path()
 | 
						|
 | 
						|
# Local imports
 | 
						|
from .. import refactor
 | 
						|
 | 
						|
### Mock code for refactor.py and the fixers
 | 
						|
###############################################################################
 | 
						|
class Options:
 | 
						|
    def __init__(self, **kwargs):
 | 
						|
        for k, v in kwargs.items():
 | 
						|
            setattr(self, k, v)
 | 
						|
 | 
						|
        self.verbose = False
 | 
						|
 | 
						|
def dummy_transform(*args, **kwargs):
 | 
						|
    pass
 | 
						|
 | 
						|
### Collect list of modules to match against
 | 
						|
###############################################################################
 | 
						|
files = []
 | 
						|
for mod in sys.modules.values():
 | 
						|
    if mod is None or not hasattr(mod, '__file__'):
 | 
						|
        continue
 | 
						|
    f = mod.__file__
 | 
						|
    if f.endswith('.pyc'):
 | 
						|
        f = f[:-1]
 | 
						|
    if f.endswith('.py'):
 | 
						|
        files.append(f)
 | 
						|
 | 
						|
### Set up refactor and run the benchmark
 | 
						|
###############################################################################
 | 
						|
options = Options(fix=["all"], print_function=False, doctests_only=False)
 | 
						|
refactor = refactor.RefactoringTool(options)
 | 
						|
for fixer in refactor.fixers:
 | 
						|
    # We don't want them to actually fix the tree, just match against it.
 | 
						|
    fixer.transform = dummy_transform
 | 
						|
 | 
						|
t = time()
 | 
						|
for f in files:
 | 
						|
    print "Matching", f
 | 
						|
    refactor.refactor_file(f)
 | 
						|
print "%d seconds to match %d files" % (time() - t, len(sys.modules))
 |