+++ /dev/null
-try:\r
- unicode\r
-except NameError:\r
- raise ImportError\r
-\r
-from pybench import Test\r
-from string import join\r
-\r
-class ConcatUnicode(Test):\r
-\r
- version = 2.0\r
- operations = 10 * 5\r
- rounds = 60000\r
-\r
- def test(self):\r
-\r
- # Make sure the strings are *not* interned\r
- s = unicode(join(map(str,range(100))))\r
- t = unicode(join(map(str,range(1,101))))\r
-\r
- for i in xrange(self.rounds):\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
-\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
-\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
-\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
-\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
-\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
-\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
-\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
-\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
-\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
- t + s\r
-\r
- def calibrate(self):\r
-\r
- s = unicode(join(map(str,range(100))))\r
- t = unicode(join(map(str,range(1,101))))\r
-\r
- for i in xrange(self.rounds):\r
- pass\r
-\r
-\r
-class CompareUnicode(Test):\r
-\r
- version = 2.0\r
- operations = 10 * 5\r
- rounds = 150000\r
-\r
- def test(self):\r
-\r
- # Make sure the strings are *not* interned\r
- s = unicode(join(map(str,range(10))))\r
- t = unicode(join(map(str,range(10))) + "abc")\r
-\r
- for i in xrange(self.rounds):\r
- t < s\r
- t > s\r
- t == s\r
- t > s\r
- t < s\r
-\r
- t < s\r
- t > s\r
- t == s\r
- t > s\r
- t < s\r
-\r
- t < s\r
- t > s\r
- t == s\r
- t > s\r
- t < s\r
-\r
- t < s\r
- t > s\r
- t == s\r
- t > s\r
- t < s\r
-\r
- t < s\r
- t > s\r
- t == s\r
- t > s\r
- t < s\r
-\r
- t < s\r
- t > s\r
- t == s\r
- t > s\r
- t < s\r
-\r
- t < s\r
- t > s\r
- t == s\r
- t > s\r
- t < s\r
-\r
- t < s\r
- t > s\r
- t == s\r
- t > s\r
- t < s\r
-\r
- t < s\r
- t > s\r
- t == s\r
- t > s\r
- t < s\r
-\r
- t < s\r
- t > s\r
- t == s\r
- t > s\r
- t < s\r
-\r
- def calibrate(self):\r
-\r
- s = unicode(join(map(str,range(10))))\r
- t = unicode(join(map(str,range(10))) + "abc")\r
-\r
- for i in xrange(self.rounds):\r
- pass\r
-\r
-\r
-class CreateUnicodeWithConcat(Test):\r
-\r
- version = 2.0\r
- operations = 10 * 5\r
- rounds = 80000\r
-\r
- def test(self):\r
-\r
- for i in xrange(self.rounds):\r
- s = u'om'\r
- s = s + u'xbx'\r
- s = s + u'xcx'\r
- s = s + u'xdx'\r
- s = s + u'xex'\r
-\r
- s = s + u'xax'\r
- s = s + u'xbx'\r
- s = s + u'xcx'\r
- s = s + u'xdx'\r
- s = s + u'xex'\r
-\r
- s = s + u'xax'\r
- s = s + u'xbx'\r
- s = s + u'xcx'\r
- s = s + u'xdx'\r
- s = s + u'xex'\r
-\r
- s = s + u'xax'\r
- s = s + u'xbx'\r
- s = s + u'xcx'\r
- s = s + u'xdx'\r
- s = s + u'xex'\r
-\r
- s = s + u'xax'\r
- s = s + u'xbx'\r
- s = s + u'xcx'\r
- s = s + u'xdx'\r
- s = s + u'xex'\r
-\r
- s = s + u'xax'\r
- s = s + u'xbx'\r
- s = s + u'xcx'\r
- s = s + u'xdx'\r
- s = s + u'xex'\r
-\r
- s = s + u'xax'\r
- s = s + u'xbx'\r
- s = s + u'xcx'\r
- s = s + u'xdx'\r
- s = s + u'xex'\r
-\r
- s = s + u'xax'\r
- s = s + u'xbx'\r
- s = s + u'xcx'\r
- s = s + u'xdx'\r
- s = s + u'xex'\r
-\r
- s = s + u'xax'\r
- s = s + u'xbx'\r
- s = s + u'xcx'\r
- s = s + u'xdx'\r
- s = s + u'xex'\r
-\r
- s = s + u'xax'\r
- s = s + u'xbx'\r
- s = s + u'xcx'\r
- s = s + u'xdx'\r
- s = s + u'xex'\r
-\r
- def calibrate(self):\r
-\r
- for i in xrange(self.rounds):\r
- pass\r
-\r
-\r
-class UnicodeSlicing(Test):\r
-\r
- version = 2.0\r
- operations = 5 * 7\r
- rounds = 140000\r
-\r
- def test(self):\r
-\r
- s = unicode(join(map(str,range(100))))\r
-\r
- for i in xrange(self.rounds):\r
-\r
- s[50:]\r
- s[:25]\r
- s[50:55]\r
- s[-1:]\r
- s[:1]\r
- s[2:]\r
- s[11:-11]\r
-\r
- s[50:]\r
- s[:25]\r
- s[50:55]\r
- s[-1:]\r
- s[:1]\r
- s[2:]\r
- s[11:-11]\r
-\r
- s[50:]\r
- s[:25]\r
- s[50:55]\r
- s[-1:]\r
- s[:1]\r
- s[2:]\r
- s[11:-11]\r
-\r
- s[50:]\r
- s[:25]\r
- s[50:55]\r
- s[-1:]\r
- s[:1]\r
- s[2:]\r
- s[11:-11]\r
-\r
- s[50:]\r
- s[:25]\r
- s[50:55]\r
- s[-1:]\r
- s[:1]\r
- s[2:]\r
- s[11:-11]\r
-\r
- def calibrate(self):\r
-\r
- s = unicode(join(map(str,range(100))))\r
-\r
- for i in xrange(self.rounds):\r
- pass\r
-\r
-### String methods\r
-\r
-class UnicodeMappings(Test):\r
-\r
- version = 2.0\r
- operations = 3 * (5 + 4 + 2 + 1)\r
- rounds = 10000\r
-\r
- def test(self):\r
-\r
- s = join(map(unichr,range(20)),'')\r
- t = join(map(unichr,range(100)),'')\r
- u = join(map(unichr,range(500)),'')\r
- v = join(map(unichr,range(1000)),'')\r
-\r
- for i in xrange(self.rounds):\r
-\r
- s.lower()\r
- s.lower()\r
- s.lower()\r
- s.lower()\r
- s.lower()\r
-\r
- s.upper()\r
- s.upper()\r
- s.upper()\r
- s.upper()\r
- s.upper()\r
-\r
- s.title()\r
- s.title()\r
- s.title()\r
- s.title()\r
- s.title()\r
-\r
- t.lower()\r
- t.lower()\r
- t.lower()\r
- t.lower()\r
-\r
- t.upper()\r
- t.upper()\r
- t.upper()\r
- t.upper()\r
-\r
- t.title()\r
- t.title()\r
- t.title()\r
- t.title()\r
-\r
- u.lower()\r
- u.lower()\r
-\r
- u.upper()\r
- u.upper()\r
-\r
- u.title()\r
- u.title()\r
-\r
- v.lower()\r
-\r
- v.upper()\r
-\r
- v.title()\r
-\r
- def calibrate(self):\r
-\r
- s = join(map(unichr,range(20)),'')\r
- t = join(map(unichr,range(100)),'')\r
- u = join(map(unichr,range(500)),'')\r
- v = join(map(unichr,range(1000)),'')\r
-\r
- for i in xrange(self.rounds):\r
- pass\r
-\r
-class UnicodePredicates(Test):\r
-\r
- version = 2.0\r
- operations = 5 * 9\r
- rounds = 120000\r
-\r
- def test(self):\r
-\r
- data = (u'abc', u'123', u' ', u'\u1234\u2345\u3456', u'\uFFFF'*10)\r
- len_data = len(data)\r
-\r
- for i in xrange(self.rounds):\r
- s = data[i % len_data]\r
-\r
- s.isalnum()\r
- s.isalpha()\r
- s.isdecimal()\r
- s.isdigit()\r
- s.islower()\r
- s.isnumeric()\r
- s.isspace()\r
- s.istitle()\r
- s.isupper()\r
-\r
- s.isalnum()\r
- s.isalpha()\r
- s.isdecimal()\r
- s.isdigit()\r
- s.islower()\r
- s.isnumeric()\r
- s.isspace()\r
- s.istitle()\r
- s.isupper()\r
-\r
- s.isalnum()\r
- s.isalpha()\r
- s.isdecimal()\r
- s.isdigit()\r
- s.islower()\r
- s.isnumeric()\r
- s.isspace()\r
- s.istitle()\r
- s.isupper()\r
-\r
- s.isalnum()\r
- s.isalpha()\r
- s.isdecimal()\r
- s.isdigit()\r
- s.islower()\r
- s.isnumeric()\r
- s.isspace()\r
- s.istitle()\r
- s.isupper()\r
-\r
- s.isalnum()\r
- s.isalpha()\r
- s.isdecimal()\r
- s.isdigit()\r
- s.islower()\r
- s.isnumeric()\r
- s.isspace()\r
- s.istitle()\r
- s.isupper()\r
-\r
- def calibrate(self):\r
-\r
- data = (u'abc', u'123', u' ', u'\u1234\u2345\u3456', u'\uFFFF'*10)\r
- len_data = len(data)\r
-\r
- for i in xrange(self.rounds):\r
- s = data[i % len_data]\r
-\r
-try:\r
- import unicodedata\r
-except ImportError:\r
- pass\r
-else:\r
- class UnicodeProperties(Test):\r
-\r
- version = 2.0\r
- operations = 5 * 8\r
- rounds = 100000\r
-\r
- def test(self):\r
-\r
- data = (u'a', u'1', u' ', u'\u1234', u'\uFFFF')\r
- len_data = len(data)\r
- digit = unicodedata.digit\r
- numeric = unicodedata.numeric\r
- decimal = unicodedata.decimal\r
- category = unicodedata.category\r
- bidirectional = unicodedata.bidirectional\r
- decomposition = unicodedata.decomposition\r
- mirrored = unicodedata.mirrored\r
- combining = unicodedata.combining\r
-\r
- for i in xrange(self.rounds):\r
-\r
- c = data[i % len_data]\r
-\r
- digit(c, None)\r
- numeric(c, None)\r
- decimal(c, None)\r
- category(c)\r
- bidirectional(c)\r
- decomposition(c)\r
- mirrored(c)\r
- combining(c)\r
-\r
- digit(c, None)\r
- numeric(c, None)\r
- decimal(c, None)\r
- category(c)\r
- bidirectional(c)\r
- decomposition(c)\r
- mirrored(c)\r
- combining(c)\r
-\r
- digit(c, None)\r
- numeric(c, None)\r
- decimal(c, None)\r
- category(c)\r
- bidirectional(c)\r
- decomposition(c)\r
- mirrored(c)\r
- combining(c)\r
-\r
- digit(c, None)\r
- numeric(c, None)\r
- decimal(c, None)\r
- category(c)\r
- bidirectional(c)\r
- decomposition(c)\r
- mirrored(c)\r
- combining(c)\r
-\r
- digit(c, None)\r
- numeric(c, None)\r
- decimal(c, None)\r
- category(c)\r
- bidirectional(c)\r
- decomposition(c)\r
- mirrored(c)\r
- combining(c)\r
-\r
- def calibrate(self):\r
-\r
- data = (u'a', u'1', u' ', u'\u1234', u'\uFFFF')\r
- len_data = len(data)\r
- digit = unicodedata.digit\r
- numeric = unicodedata.numeric\r
- decimal = unicodedata.decimal\r
- category = unicodedata.category\r
- bidirectional = unicodedata.bidirectional\r
- decomposition = unicodedata.decomposition\r
- mirrored = unicodedata.mirrored\r
- combining = unicodedata.combining\r
-\r
- for i in xrange(self.rounds):\r
-\r
- c = data[i % len_data]\r