542 lines · 10.8 KB · Python
RawDownload
try:    unicodeexcept NameError:    raise ImportError from pybench import Testfrom string import join class ConcatUnicode(Test):     version = 2.0    operations = 10 * 5    rounds = 60000     def test(self):         # Make sure the strings are *not* interned        s = unicode(join(map(str,range(100))))        t = unicode(join(map(str,range(1,101))))         for i in xrange(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(join(map(str,range(100))))        t = unicode(join(map(str,range(1,101))))         for i in xrange(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(join(map(str,range(10))))        t = unicode(join(map(str,range(10))) + "abc")         for i in xrange(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(join(map(str,range(10))))        t = unicode(join(map(str,range(10))) + "abc")         for i in xrange(self.rounds):            pass  class CreateUnicodeWithConcat(Test):     version = 2.0    operations = 10 * 5    rounds = 80000     def test(self):         for i in xrange(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 xrange(self.rounds):            pass  class UnicodeSlicing(Test):     version = 2.0    operations = 5 * 7    rounds = 140000     def test(self):         s = unicode(join(map(str,range(100))))         for i in xrange(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(join(map(str,range(100))))         for i in xrange(self.rounds):            pass ### String methods class UnicodeMappings(Test):     version = 2.0    operations = 3 * (5 + 4 + 2 + 1)    rounds = 10000     def test(self):         s = join(map(unichr,range(20)),'')        t = join(map(unichr,range(100)),'')        u = join(map(unichr,range(500)),'')        v = join(map(unichr,range(1000)),'')         for i in xrange(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 = join(map(unichr,range(20)),'')        t = join(map(unichr,range(100)),'')        u = join(map(unichr,range(500)),'')        v = join(map(unichr,range(1000)),'')         for i in xrange(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 xrange(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 xrange(self.rounds):            s = data[i % len_data] try:    import unicodedataexcept ImportError:    passelse:    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 xrange(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)

Lines 1–500 of 542.