mirror of https://github.com/python/cpython
GH-119518: Stop interning strings in pathlib GH-123356)
Remove `sys.intern(str(x))` calls when normalizing a path in pathlib. This speeds up `str(Path('foo/bar'))` by about 10%.
This commit is contained in:
parent
77a2fb4bf1
commit
5002f17794
|
@ -272,8 +272,7 @@ class PurePath(PurePathBase):
|
|||
elif len(drv_parts) == 6:
|
||||
# e.g. //?/unc/server/share
|
||||
root = sep
|
||||
parsed = [sys.intern(str(x)) for x in rel.split(sep) if x and x != '.']
|
||||
return drv, root, parsed
|
||||
return drv, root, [x for x in rel.split(sep) if x and x != '.']
|
||||
|
||||
@property
|
||||
def _raw_path(self):
|
||||
|
|
|
@ -163,15 +163,6 @@ class PurePathTest(test_pathlib_abc.DummyPurePathTest):
|
|||
# Special case for the empty path.
|
||||
self._check_str('.', ('',))
|
||||
|
||||
def test_parts_interning(self):
|
||||
P = self.cls
|
||||
p = P('/usr/bin/foo')
|
||||
q = P('/usr/local/bin')
|
||||
# 'usr'
|
||||
self.assertIs(p.parts[1], q.parts[1])
|
||||
# 'bin'
|
||||
self.assertIs(p.parts[2], q.parts[3])
|
||||
|
||||
def test_join_nested(self):
|
||||
P = self.cls
|
||||
p = P('a/b').joinpath(P('c'))
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Speed up normalization of :class:`pathlib.PurePath` and
|
||||
:class:`~pathlib.Path` objects by not interning string parts.
|
Loading…
Reference in New Issue