mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	svn+ssh://pythondev@svn.python.org/python/branches/p3yk ................ r56037 | georg.brandl | 2007-06-19 05:33:20 -0700 (Tue, 19 Jun 2007) | 2 lines Patch #1739659: don't slice dict.keys() in pydoc. ................ r56060 | martin.v.loewis | 2007-06-21 13:00:02 -0700 (Thu, 21 Jun 2007) | 2 lines Regenerate to add True, False, None. ................ r56069 | neal.norwitz | 2007-06-21 22:31:56 -0700 (Thu, 21 Jun 2007) | 1 line Get the doctest working again after adding None, True, and False as kewyords. ................ r56070 | neal.norwitz | 2007-06-21 23:25:33 -0700 (Thu, 21 Jun 2007) | 1 line Add space to error message. ................ r56071 | neal.norwitz | 2007-06-21 23:40:04 -0700 (Thu, 21 Jun 2007) | 6 lines Get pybench working, primarily * Use print function * Stop using string module * Use sorted instead of assuming dict methods return lists * Convert range result to a list ................ r56089 | collin.winter | 2007-06-26 10:31:48 -0700 (Tue, 26 Jun 2007) | 1 line Fix AttributeError in distutils/dir_util.py. ................ r56124 | guido.van.rossum | 2007-06-29 18:04:31 -0700 (Fri, 29 Jun 2007) | 30 lines Merged revisions 56014-56123 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r56019 | lars.gustaebel | 2007-06-18 04:42:11 -0700 (Mon, 18 Jun 2007) | 2 lines Added exclude keyword argument to the TarFile.add() method. ........ r56023 | lars.gustaebel | 2007-06-18 13:05:55 -0700 (Mon, 18 Jun 2007) | 3 lines Added missing \versionchanged tag for the new exclude parameter. ........ r56038 | georg.brandl | 2007-06-19 05:36:00 -0700 (Tue, 19 Jun 2007) | 2 lines Bug #1737864: allow empty message in logging format routines. ........ r56040 | georg.brandl | 2007-06-19 05:38:20 -0700 (Tue, 19 Jun 2007) | 2 lines Bug #1739115: make shutil.rmtree docs clear wrt. file deletion. ........ r56084 | georg.brandl | 2007-06-25 08:21:23 -0700 (Mon, 25 Jun 2007) | 2 lines Bug #1742901: document None behavior of shlex.split. ........ r56091 | georg.brandl | 2007-06-27 07:09:56 -0700 (Wed, 27 Jun 2007) | 2 lines Fix a variable name in winreg docs. ........ ................
		
			
				
	
	
		
			541 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			541 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
try:
 | 
						|
    unicode
 | 
						|
except NameError:
 | 
						|
    raise ImportError
 | 
						|
 | 
						|
from pybench import Test
 | 
						|
 | 
						|
class ConcatUnicode(Test):
 | 
						|
 | 
						|
    version = 2.0
 | 
						|
    operations = 10 * 5
 | 
						|
    rounds = 60000
 | 
						|
 | 
						|
    def test(self):
 | 
						|
 | 
						|
        # Make sure the strings are *not* interned
 | 
						|
        s = unicode(u''.join(map(str,range(100))))
 | 
						|
        t = unicode(u''.join(map(str,range(1,101))))
 | 
						|
 | 
						|
        for i in range(self.rounds):
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
            t + s
 | 
						|
 | 
						|
    def calibrate(self):
 | 
						|
 | 
						|
        s = unicode(u''.join(map(str,range(100))))
 | 
						|
        t = unicode(u''.join(map(str,range(1,101))))
 | 
						|
 | 
						|
        for i in range(self.rounds):
 | 
						|
            pass
 | 
						|
 | 
						|
 | 
						|
class CompareUnicode(Test):
 | 
						|
 | 
						|
    version = 2.0
 | 
						|
    operations = 10 * 5
 | 
						|
    rounds = 150000
 | 
						|
 | 
						|
    def test(self):
 | 
						|
 | 
						|
        # Make sure the strings are *not* interned
 | 
						|
        s = unicode(u''.join(map(str,range(10))))
 | 
						|
        t = unicode(u''.join(map(str,range(10))) + "abc")
 | 
						|
 | 
						|
        for i in range(self.rounds):
 | 
						|
            t < s
 | 
						|
            t > s
 | 
						|
            t == s
 | 
						|
            t > s
 | 
						|
            t < s
 | 
						|
 | 
						|
            t < s
 | 
						|
            t > s
 | 
						|
            t == s
 | 
						|
            t > s
 | 
						|
            t < s
 | 
						|
 | 
						|
            t < s
 | 
						|
            t > s
 | 
						|
            t == s
 | 
						|
            t > s
 | 
						|
            t < s
 | 
						|
 | 
						|
            t < s
 | 
						|
            t > s
 | 
						|
            t == s
 | 
						|
            t > s
 | 
						|
            t < s
 | 
						|
 | 
						|
            t < s
 | 
						|
            t > s
 | 
						|
            t == s
 | 
						|
            t > s
 | 
						|
            t < s
 | 
						|
 | 
						|
            t < s
 | 
						|
            t > s
 | 
						|
            t == s
 | 
						|
            t > s
 | 
						|
            t < s
 | 
						|
 | 
						|
            t < s
 | 
						|
            t > s
 | 
						|
            t == s
 | 
						|
            t > s
 | 
						|
            t < s
 | 
						|
 | 
						|
            t < s
 | 
						|
            t > s
 | 
						|
            t == s
 | 
						|
            t > s
 | 
						|
            t < s
 | 
						|
 | 
						|
            t < s
 | 
						|
            t > s
 | 
						|
            t == s
 | 
						|
            t > s
 | 
						|
            t < s
 | 
						|
 | 
						|
            t < s
 | 
						|
            t > s
 | 
						|
            t == s
 | 
						|
            t > s
 | 
						|
            t < s
 | 
						|
 | 
						|
    def calibrate(self):
 | 
						|
 | 
						|
        s = unicode(u''.join(map(str,range(10))))
 | 
						|
        t = unicode(u''.join(map(str,range(10))) + "abc")
 | 
						|
 | 
						|
        for i in range(self.rounds):
 | 
						|
            pass
 | 
						|
 | 
						|
 | 
						|
class CreateUnicodeWithConcat(Test):
 | 
						|
 | 
						|
    version = 2.0
 | 
						|
    operations = 10 * 5
 | 
						|
    rounds = 80000
 | 
						|
 | 
						|
    def test(self):
 | 
						|
 | 
						|
        for i in range(self.rounds):
 | 
						|
            s = u'om'
 | 
						|
            s = s + u'xbx'
 | 
						|
            s = s + u'xcx'
 | 
						|
            s = s + u'xdx'
 | 
						|
            s = s + u'xex'
 | 
						|
 | 
						|
            s = s + u'xax'
 | 
						|
            s = s + u'xbx'
 | 
						|
            s = s + u'xcx'
 | 
						|
            s = s + u'xdx'
 | 
						|
            s = s + u'xex'
 | 
						|
 | 
						|
            s = s + u'xax'
 | 
						|
            s = s + u'xbx'
 | 
						|
            s = s + u'xcx'
 | 
						|
            s = s + u'xdx'
 | 
						|
            s = s + u'xex'
 | 
						|
 | 
						|
            s = s + u'xax'
 | 
						|
            s = s + u'xbx'
 | 
						|
            s = s + u'xcx'
 | 
						|
            s = s + u'xdx'
 | 
						|
            s = s + u'xex'
 | 
						|
 | 
						|
            s = s + u'xax'
 | 
						|
            s = s + u'xbx'
 | 
						|
            s = s + u'xcx'
 | 
						|
            s = s + u'xdx'
 | 
						|
            s = s + u'xex'
 | 
						|
 | 
						|
            s = s + u'xax'
 | 
						|
            s = s + u'xbx'
 | 
						|
            s = s + u'xcx'
 | 
						|
            s = s + u'xdx'
 | 
						|
            s = s + u'xex'
 | 
						|
 | 
						|
            s = s + u'xax'
 | 
						|
            s = s + u'xbx'
 | 
						|
            s = s + u'xcx'
 | 
						|
            s = s + u'xdx'
 | 
						|
            s = s + u'xex'
 | 
						|
 | 
						|
            s = s + u'xax'
 | 
						|
            s = s + u'xbx'
 | 
						|
            s = s + u'xcx'
 | 
						|
            s = s + u'xdx'
 | 
						|
            s = s + u'xex'
 | 
						|
 | 
						|
            s = s + u'xax'
 | 
						|
            s = s + u'xbx'
 | 
						|
            s = s + u'xcx'
 | 
						|
            s = s + u'xdx'
 | 
						|
            s = s + u'xex'
 | 
						|
 | 
						|
            s = s + u'xax'
 | 
						|
            s = s + u'xbx'
 | 
						|
            s = s + u'xcx'
 | 
						|
            s = s + u'xdx'
 | 
						|
            s = s + u'xex'
 | 
						|
 | 
						|
    def calibrate(self):
 | 
						|
 | 
						|
        for i in range(self.rounds):
 | 
						|
            pass
 | 
						|
 | 
						|
 | 
						|
class UnicodeSlicing(Test):
 | 
						|
 | 
						|
    version = 2.0
 | 
						|
    operations = 5 * 7
 | 
						|
    rounds = 140000
 | 
						|
 | 
						|
    def test(self):
 | 
						|
 | 
						|
        s = unicode(u''.join(map(str,range(100))))
 | 
						|
 | 
						|
        for i in range(self.rounds):
 | 
						|
 | 
						|
            s[50:]
 | 
						|
            s[:25]
 | 
						|
            s[50:55]
 | 
						|
            s[-1:]
 | 
						|
            s[:1]
 | 
						|
            s[2:]
 | 
						|
            s[11:-11]
 | 
						|
 | 
						|
            s[50:]
 | 
						|
            s[:25]
 | 
						|
            s[50:55]
 | 
						|
            s[-1:]
 | 
						|
            s[:1]
 | 
						|
            s[2:]
 | 
						|
            s[11:-11]
 | 
						|
 | 
						|
            s[50:]
 | 
						|
            s[:25]
 | 
						|
            s[50:55]
 | 
						|
            s[-1:]
 | 
						|
            s[:1]
 | 
						|
            s[2:]
 | 
						|
            s[11:-11]
 | 
						|
 | 
						|
            s[50:]
 | 
						|
            s[:25]
 | 
						|
            s[50:55]
 | 
						|
            s[-1:]
 | 
						|
            s[:1]
 | 
						|
            s[2:]
 | 
						|
            s[11:-11]
 | 
						|
 | 
						|
            s[50:]
 | 
						|
            s[:25]
 | 
						|
            s[50:55]
 | 
						|
            s[-1:]
 | 
						|
            s[:1]
 | 
						|
            s[2:]
 | 
						|
            s[11:-11]
 | 
						|
 | 
						|
    def calibrate(self):
 | 
						|
 | 
						|
        s = unicode(u''.join(map(str,range(100))))
 | 
						|
 | 
						|
        for i in range(self.rounds):
 | 
						|
            pass
 | 
						|
 | 
						|
### String methods
 | 
						|
 | 
						|
class UnicodeMappings(Test):
 | 
						|
 | 
						|
    version = 2.0
 | 
						|
    operations = 3 * (5 + 4 + 2 + 1)
 | 
						|
    rounds = 10000
 | 
						|
 | 
						|
    def test(self):
 | 
						|
 | 
						|
        s = u''.join(map(unichr,range(20)))
 | 
						|
        t = u''.join(map(unichr,range(100)))
 | 
						|
        u = u''.join(map(unichr,range(500)))
 | 
						|
        v = u''.join(map(unichr,range(1000)))
 | 
						|
 | 
						|
        for i in range(self.rounds):
 | 
						|
 | 
						|
            s.lower()
 | 
						|
            s.lower()
 | 
						|
            s.lower()
 | 
						|
            s.lower()
 | 
						|
            s.lower()
 | 
						|
 | 
						|
            s.upper()
 | 
						|
            s.upper()
 | 
						|
            s.upper()
 | 
						|
            s.upper()
 | 
						|
            s.upper()
 | 
						|
 | 
						|
            s.title()
 | 
						|
            s.title()
 | 
						|
            s.title()
 | 
						|
            s.title()
 | 
						|
            s.title()
 | 
						|
 | 
						|
            t.lower()
 | 
						|
            t.lower()
 | 
						|
            t.lower()
 | 
						|
            t.lower()
 | 
						|
 | 
						|
            t.upper()
 | 
						|
            t.upper()
 | 
						|
            t.upper()
 | 
						|
            t.upper()
 | 
						|
 | 
						|
            t.title()
 | 
						|
            t.title()
 | 
						|
            t.title()
 | 
						|
            t.title()
 | 
						|
 | 
						|
            u.lower()
 | 
						|
            u.lower()
 | 
						|
 | 
						|
            u.upper()
 | 
						|
            u.upper()
 | 
						|
 | 
						|
            u.title()
 | 
						|
            u.title()
 | 
						|
 | 
						|
            v.lower()
 | 
						|
 | 
						|
            v.upper()
 | 
						|
 | 
						|
            v.title()
 | 
						|
 | 
						|
    def calibrate(self):
 | 
						|
 | 
						|
        s = u''.join(map(unichr,range(20)))
 | 
						|
        t = u''.join(map(unichr,range(100)))
 | 
						|
        u = u''.join(map(unichr,range(500)))
 | 
						|
        v = u''.join(map(unichr,range(1000)))
 | 
						|
 | 
						|
        for i in range(self.rounds):
 | 
						|
            pass
 | 
						|
 | 
						|
class UnicodePredicates(Test):
 | 
						|
 | 
						|
    version = 2.0
 | 
						|
    operations = 5 * 9
 | 
						|
    rounds = 120000
 | 
						|
 | 
						|
    def test(self):
 | 
						|
 | 
						|
        data = (u'abc', u'123', u'   ', u'\u1234\u2345\u3456', u'\uFFFF'*10)
 | 
						|
        len_data = len(data)
 | 
						|
 | 
						|
        for i in range(self.rounds):
 | 
						|
            s = data[i % len_data]
 | 
						|
 | 
						|
            s.isalnum()
 | 
						|
            s.isalpha()
 | 
						|
            s.isdecimal()
 | 
						|
            s.isdigit()
 | 
						|
            s.islower()
 | 
						|
            s.isnumeric()
 | 
						|
            s.isspace()
 | 
						|
            s.istitle()
 | 
						|
            s.isupper()
 | 
						|
 | 
						|
            s.isalnum()
 | 
						|
            s.isalpha()
 | 
						|
            s.isdecimal()
 | 
						|
            s.isdigit()
 | 
						|
            s.islower()
 | 
						|
            s.isnumeric()
 | 
						|
            s.isspace()
 | 
						|
            s.istitle()
 | 
						|
            s.isupper()
 | 
						|
 | 
						|
            s.isalnum()
 | 
						|
            s.isalpha()
 | 
						|
            s.isdecimal()
 | 
						|
            s.isdigit()
 | 
						|
            s.islower()
 | 
						|
            s.isnumeric()
 | 
						|
            s.isspace()
 | 
						|
            s.istitle()
 | 
						|
            s.isupper()
 | 
						|
 | 
						|
            s.isalnum()
 | 
						|
            s.isalpha()
 | 
						|
            s.isdecimal()
 | 
						|
            s.isdigit()
 | 
						|
            s.islower()
 | 
						|
            s.isnumeric()
 | 
						|
            s.isspace()
 | 
						|
            s.istitle()
 | 
						|
            s.isupper()
 | 
						|
 | 
						|
            s.isalnum()
 | 
						|
            s.isalpha()
 | 
						|
            s.isdecimal()
 | 
						|
            s.isdigit()
 | 
						|
            s.islower()
 | 
						|
            s.isnumeric()
 | 
						|
            s.isspace()
 | 
						|
            s.istitle()
 | 
						|
            s.isupper()
 | 
						|
 | 
						|
    def calibrate(self):
 | 
						|
 | 
						|
        data = (u'abc', u'123', u'   ', u'\u1234\u2345\u3456', u'\uFFFF'*10)
 | 
						|
        len_data = len(data)
 | 
						|
 | 
						|
        for i in range(self.rounds):
 | 
						|
            s = data[i % len_data]
 | 
						|
 | 
						|
try:
 | 
						|
    import unicodedata
 | 
						|
except ImportError:
 | 
						|
    pass
 | 
						|
else:
 | 
						|
    class UnicodeProperties(Test):
 | 
						|
 | 
						|
        version = 2.0
 | 
						|
        operations = 5 * 8
 | 
						|
        rounds = 100000
 | 
						|
 | 
						|
        def test(self):
 | 
						|
 | 
						|
            data = (u'a', u'1', u' ', u'\u1234', u'\uFFFF')
 | 
						|
            len_data = len(data)
 | 
						|
            digit = unicodedata.digit
 | 
						|
            numeric = unicodedata.numeric
 | 
						|
            decimal = unicodedata.decimal
 | 
						|
            category = unicodedata.category
 | 
						|
            bidirectional = unicodedata.bidirectional
 | 
						|
            decomposition = unicodedata.decomposition
 | 
						|
            mirrored = unicodedata.mirrored
 | 
						|
            combining = unicodedata.combining
 | 
						|
 | 
						|
            for i in range(self.rounds):
 | 
						|
 | 
						|
                c = data[i % len_data]
 | 
						|
 | 
						|
                digit(c, None)
 | 
						|
                numeric(c, None)
 | 
						|
                decimal(c, None)
 | 
						|
                category(c)
 | 
						|
                bidirectional(c)
 | 
						|
                decomposition(c)
 | 
						|
                mirrored(c)
 | 
						|
                combining(c)
 | 
						|
 | 
						|
                digit(c, None)
 | 
						|
                numeric(c, None)
 | 
						|
                decimal(c, None)
 | 
						|
                category(c)
 | 
						|
                bidirectional(c)
 | 
						|
                decomposition(c)
 | 
						|
                mirrored(c)
 | 
						|
                combining(c)
 | 
						|
 | 
						|
                digit(c, None)
 | 
						|
                numeric(c, None)
 | 
						|
                decimal(c, None)
 | 
						|
                category(c)
 | 
						|
                bidirectional(c)
 | 
						|
                decomposition(c)
 | 
						|
                mirrored(c)
 | 
						|
                combining(c)
 | 
						|
 | 
						|
                digit(c, None)
 | 
						|
                numeric(c, None)
 | 
						|
                decimal(c, None)
 | 
						|
                category(c)
 | 
						|
                bidirectional(c)
 | 
						|
                decomposition(c)
 | 
						|
                mirrored(c)
 | 
						|
                combining(c)
 | 
						|
 | 
						|
                digit(c, None)
 | 
						|
                numeric(c, None)
 | 
						|
                decimal(c, None)
 | 
						|
                category(c)
 | 
						|
                bidirectional(c)
 | 
						|
                decomposition(c)
 | 
						|
                mirrored(c)
 | 
						|
                combining(c)
 | 
						|
 | 
						|
        def calibrate(self):
 | 
						|
 | 
						|
            data = (u'a', u'1', u' ', u'\u1234', u'\uFFFF')
 | 
						|
            len_data = len(data)
 | 
						|
            digit = unicodedata.digit
 | 
						|
            numeric = unicodedata.numeric
 | 
						|
            decimal = unicodedata.decimal
 | 
						|
            category = unicodedata.category
 | 
						|
            bidirectional = unicodedata.bidirectional
 | 
						|
            decomposition = unicodedata.decomposition
 | 
						|
            mirrored = unicodedata.mirrored
 | 
						|
            combining = unicodedata.combining
 | 
						|
 | 
						|
            for i in range(self.rounds):
 | 
						|
 | 
						|
                c = data[i % len_data]
 |