SIGN IN SIGN UP

GH-101362: Optimise PurePath(PurePath(...)) (GH-101667)

The previous `_parse_args()` method pulled the `_parts` out of any supplied `PurePath` objects; these were subsequently joined in `_from_parts()` using `os.path.join()`. This is actually a slower form of joining than calling `fspath()` on the path object, because it doesn't take advantage of the fact that the contents of `_parts` is normalized!

This reduces the time taken to run `PurePath("foo", "bar")` by ~20%, and the time taken to run `PurePath(p, "cheese")`, where `p = PurePath("/foo", "bar", "baz")`, by ~40%.

Automerge-Triggered-By: GH:AlexWaygood
B
Barney Gale committed
6716254e71eeb4666fd6d1a13857832caad7b19f
Parent: 3e60e02
Committed by GitHub <noreply@github.com> on 3/5/2023, 11:50:21 PM