mirror of
https://github.com/python/cpython.git
synced 2025-07-18 16:55:20 +00:00

svn+ssh://pythondev@svn.python.org/python/branches/p3yk ........ r55077 | guido.van.rossum | 2007-05-02 11:54:37 -0700 (Wed, 02 May 2007) | 2 lines Use the new print syntax, at least. ........ r55142 | fred.drake | 2007-05-04 21:27:30 -0700 (Fri, 04 May 2007) | 1 line remove old cruftiness ........ r55143 | fred.drake | 2007-05-04 21:52:16 -0700 (Fri, 04 May 2007) | 1 line make this work with the new Python ........ r55162 | neal.norwitz | 2007-05-06 22:29:18 -0700 (Sun, 06 May 2007) | 1 line Get asdl code gen working with Python 2.3. Should continue to work with 3.0 ........ r55164 | neal.norwitz | 2007-05-07 00:00:38 -0700 (Mon, 07 May 2007) | 1 line Verify checkins to p3yk (sic) branch go to 3000 list. ........ r55166 | neal.norwitz | 2007-05-07 00:12:35 -0700 (Mon, 07 May 2007) | 1 line Fix this test so it runs again by importing warnings_test properly. ........ r55167 | neal.norwitz | 2007-05-07 01:03:22 -0700 (Mon, 07 May 2007) | 8 lines So long xrange. range() now supports values that are outside -sys.maxint to sys.maxint. floats raise a TypeError. This has been sitting for a long time. It probably has some problems and needs cleanup. Objects/rangeobject.c now uses 4-space indents since it is almost completely new. ........ r55171 | guido.van.rossum | 2007-05-07 10:21:26 -0700 (Mon, 07 May 2007) | 4 lines Fix two tests that were previously depending on significant spaces at the end of a line (and before that on Python 2.x print behavior that has no exact equivalent in 3.0). ........
542 lines
11 KiB
Python
542 lines
11 KiB
Python
try:
|
|
unicode
|
|
except NameError:
|
|
raise ImportError
|
|
|
|
from pybench import Test
|
|
from 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 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(join(map(str,range(100))))
|
|
t = unicode(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(join(map(str,range(10))))
|
|
t = unicode(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(join(map(str,range(10))))
|
|
t = unicode(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(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(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 = 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 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 = 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 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]
|