mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-22 21:32:31 +00:00
python-3.6.zip added from Github
README.cosmo contains the necessary links.
This commit is contained in:
parent
75fc601ff5
commit
0c4c56ff39
4219 changed files with 1968626 additions and 0 deletions
568
third_party/python/Tools/pybench/Strings.py
vendored
Normal file
568
third_party/python/Tools/pybench/Strings.py
vendored
Normal file
|
@ -0,0 +1,568 @@
|
|||
from pybench import Test
|
||||
import sys
|
||||
|
||||
try:
|
||||
intern
|
||||
except NameError:
|
||||
intern = sys.intern
|
||||
|
||||
|
||||
class ConcatStrings(Test):
|
||||
|
||||
version = 2.0
|
||||
operations = 10 * 5
|
||||
rounds = 100000
|
||||
|
||||
def test(self):
|
||||
|
||||
# Make sure the strings are *not* interned
|
||||
s = ''.join(map(str,range(100)))
|
||||
t = ''.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 = ''.join(map(str,range(100)))
|
||||
t = ''.join(map(str,range(1,101)))
|
||||
|
||||
for i in range(self.rounds):
|
||||
pass
|
||||
|
||||
|
||||
class CompareStrings(Test):
|
||||
|
||||
version = 2.0
|
||||
operations = 10 * 5
|
||||
rounds = 200000
|
||||
|
||||
def test(self):
|
||||
|
||||
# Make sure the strings are *not* interned
|
||||
s = ''.join(map(str,range(10)))
|
||||
t = ''.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 = ''.join(map(str,range(10)))
|
||||
t = ''.join(map(str,range(10))) + "abc"
|
||||
|
||||
for i in range(self.rounds):
|
||||
pass
|
||||
|
||||
|
||||
class CompareInternedStrings(Test):
|
||||
|
||||
version = 2.0
|
||||
operations = 10 * 5
|
||||
rounds = 300000
|
||||
|
||||
def test(self):
|
||||
|
||||
# Make sure the strings *are* interned
|
||||
s = intern(''.join(map(str,range(10))))
|
||||
t = s
|
||||
|
||||
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 = intern(''.join(map(str,range(10))))
|
||||
t = s
|
||||
|
||||
for i in range(self.rounds):
|
||||
pass
|
||||
|
||||
|
||||
class CreateStringsWithConcat(Test):
|
||||
|
||||
version = 2.0
|
||||
operations = 10 * 5
|
||||
rounds = 200000
|
||||
|
||||
def test(self):
|
||||
|
||||
for i in range(self.rounds):
|
||||
s = 'om'
|
||||
s = s + 'xbx'
|
||||
s = s + 'xcx'
|
||||
s = s + 'xdx'
|
||||
s = s + 'xex'
|
||||
|
||||
s = s + 'xax'
|
||||
s = s + 'xbx'
|
||||
s = s + 'xcx'
|
||||
s = s + 'xdx'
|
||||
s = s + 'xex'
|
||||
|
||||
s = s + 'xax'
|
||||
s = s + 'xbx'
|
||||
s = s + 'xcx'
|
||||
s = s + 'xdx'
|
||||
s = s + 'xex'
|
||||
|
||||
s = s + 'xax'
|
||||
s = s + 'xbx'
|
||||
s = s + 'xcx'
|
||||
s = s + 'xdx'
|
||||
s = s + 'xex'
|
||||
|
||||
s = s + 'xax'
|
||||
s = s + 'xbx'
|
||||
s = s + 'xcx'
|
||||
s = s + 'xdx'
|
||||
s = s + 'xex'
|
||||
|
||||
s = s + 'xax'
|
||||
s = s + 'xbx'
|
||||
s = s + 'xcx'
|
||||
s = s + 'xdx'
|
||||
s = s + 'xex'
|
||||
|
||||
s = s + 'xax'
|
||||
s = s + 'xbx'
|
||||
s = s + 'xcx'
|
||||
s = s + 'xdx'
|
||||
s = s + 'xex'
|
||||
|
||||
s = s + 'xax'
|
||||
s = s + 'xbx'
|
||||
s = s + 'xcx'
|
||||
s = s + 'xdx'
|
||||
s = s + 'xex'
|
||||
|
||||
s = s + 'xax'
|
||||
s = s + 'xbx'
|
||||
s = s + 'xcx'
|
||||
s = s + 'xdx'
|
||||
s = s + 'xex'
|
||||
|
||||
s = s + 'xax'
|
||||
s = s + 'xbx'
|
||||
s = s + 'xcx'
|
||||
s = s + 'xdx'
|
||||
s = s + 'xex'
|
||||
|
||||
def calibrate(self):
|
||||
|
||||
for i in range(self.rounds):
|
||||
pass
|
||||
|
||||
|
||||
class StringSlicing(Test):
|
||||
|
||||
version = 2.0
|
||||
operations = 5 * 7
|
||||
rounds = 160000
|
||||
|
||||
def test(self):
|
||||
|
||||
s = ''.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 = ''.join(map(str,range(100)))
|
||||
|
||||
for i in range(self.rounds):
|
||||
pass
|
||||
|
||||
### String methods
|
||||
|
||||
if hasattr('', 'lower'):
|
||||
|
||||
class StringMappings(Test):
|
||||
|
||||
version = 2.0
|
||||
operations = 3 * (5 + 4 + 2 + 1)
|
||||
rounds = 70000
|
||||
|
||||
def test(self):
|
||||
|
||||
s = ''.join(map(chr,range(20)))
|
||||
t = ''.join(map(chr,range(50)))
|
||||
u = ''.join(map(chr,range(100)))
|
||||
v = ''.join(map(chr,range(256)))
|
||||
|
||||
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(chr,range(20)))
|
||||
t = ''.join(map(chr,range(50)))
|
||||
u = ''.join(map(chr,range(100)))
|
||||
v = ''.join(map(chr,range(256)))
|
||||
|
||||
for i in range(self.rounds):
|
||||
pass
|
||||
|
||||
class StringPredicates(Test):
|
||||
|
||||
version = 2.0
|
||||
operations = 10 * 7
|
||||
rounds = 100000
|
||||
|
||||
def test(self):
|
||||
|
||||
data = ('abc', '123', ' ', '\xe4\xf6\xfc', '\xdf'*10)
|
||||
len_data = len(data)
|
||||
|
||||
for i in range(self.rounds):
|
||||
s = data[i % len_data]
|
||||
|
||||
s.isalnum()
|
||||
s.isalpha()
|
||||
s.isdigit()
|
||||
s.islower()
|
||||
s.isspace()
|
||||
s.istitle()
|
||||
s.isupper()
|
||||
|
||||
s.isalnum()
|
||||
s.isalpha()
|
||||
s.isdigit()
|
||||
s.islower()
|
||||
s.isspace()
|
||||
s.istitle()
|
||||
s.isupper()
|
||||
|
||||
s.isalnum()
|
||||
s.isalpha()
|
||||
s.isdigit()
|
||||
s.islower()
|
||||
s.isspace()
|
||||
s.istitle()
|
||||
s.isupper()
|
||||
|
||||
s.isalnum()
|
||||
s.isalpha()
|
||||
s.isdigit()
|
||||
s.islower()
|
||||
s.isspace()
|
||||
s.istitle()
|
||||
s.isupper()
|
||||
|
||||
s.isalnum()
|
||||
s.isalpha()
|
||||
s.isdigit()
|
||||
s.islower()
|
||||
s.isspace()
|
||||
s.istitle()
|
||||
s.isupper()
|
||||
|
||||
s.isalnum()
|
||||
s.isalpha()
|
||||
s.isdigit()
|
||||
s.islower()
|
||||
s.isspace()
|
||||
s.istitle()
|
||||
s.isupper()
|
||||
|
||||
s.isalnum()
|
||||
s.isalpha()
|
||||
s.isdigit()
|
||||
s.islower()
|
||||
s.isspace()
|
||||
s.istitle()
|
||||
s.isupper()
|
||||
|
||||
s.isalnum()
|
||||
s.isalpha()
|
||||
s.isdigit()
|
||||
s.islower()
|
||||
s.isspace()
|
||||
s.istitle()
|
||||
s.isupper()
|
||||
|
||||
s.isalnum()
|
||||
s.isalpha()
|
||||
s.isdigit()
|
||||
s.islower()
|
||||
s.isspace()
|
||||
s.istitle()
|
||||
s.isupper()
|
||||
|
||||
s.isalnum()
|
||||
s.isalpha()
|
||||
s.isdigit()
|
||||
s.islower()
|
||||
s.isspace()
|
||||
s.istitle()
|
||||
s.isupper()
|
||||
|
||||
def calibrate(self):
|
||||
|
||||
data = ('abc', '123', ' ', '\u1234\u2345\u3456', '\uFFFF'*10)
|
||||
data = ('abc', '123', ' ', '\xe4\xf6\xfc', '\xdf'*10)
|
||||
len_data = len(data)
|
||||
|
||||
for i in range(self.rounds):
|
||||
s = data[i % len_data]
|
Loading…
Add table
Add a link
Reference in a new issue