]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-131196: Improve perfomance of `UUID.hex` and `UUID.__str__` by ~10% (#131197)
authorGrigory Bukovsky <32143244+booqoffsky@users.noreply.github.com>
Thu, 13 Mar 2025 22:57:38 +0000 (01:57 +0300)
committerGitHub <noreply@github.com>
Thu, 13 Mar 2025 22:57:38 +0000 (01:57 +0300)
Results before and after the fix:

```
hex
before: 0.021755493999989994
after:  0.01465080400066654

str
before: 0.06381790500017814
after:  0.05134949700004654
```

Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
Lib/uuid.py
Misc/NEWS.d/next/Library/2025-03-13-19-53-57.gh-issue-131196.3sBFv2.rst [new file with mode: 0644]

index 7a12b48cb008f1141cf170eb7417ab99ea603258..6f7a7a3f42ac11c37ba660cda31480e944bee239 100644 (file)
@@ -321,9 +321,8 @@ class UUID:
         raise TypeError('UUID objects are immutable')
 
     def __str__(self):
-        hex = '%032x' % self.int
-        return '%s-%s-%s-%s-%s' % (
-            hex[:8], hex[8:12], hex[12:16], hex[16:20], hex[20:])
+        x = self.hex
+        return f'{x[:8]}-{x[8:12]}-{x[12:16]}-{x[16:20]}-{x[20:]}'
 
     @property
     def bytes(self):
@@ -387,7 +386,7 @@ class UUID:
 
     @property
     def hex(self):
-        return '%032x' % self.int
+        return self.bytes.hex()
 
     @property
     def urn(self):
diff --git a/Misc/NEWS.d/next/Library/2025-03-13-19-53-57.gh-issue-131196.3sBFv2.rst b/Misc/NEWS.d/next/Library/2025-03-13-19-53-57.gh-issue-131196.3sBFv2.rst
new file mode 100644 (file)
index 0000000..72c10fe
--- /dev/null
@@ -0,0 +1 @@
+Improve perfomance of :attr:`uuid.UUID.hex` and :meth:`uuid.UUID.__str__ <object.__str__>`.