[Python-checkins] bpo-42452: Improve colorsys.rgb_to_hls code (GH-23306)
terryjreedy
webhook-mailer at python.org
Sat Nov 28 02:11:33 EST 2020
https://github.com/python/cpython/commit/f9195318a863e237f41ed7665c767028cde1c9a3
commit: f9195318a863e237f41ed7665c767028cde1c9a3
branch: master
author: Julien Jerphanion <git at jjerphan.xyz>
committer: terryjreedy <tjreedy at udel.edu>
date: 2020-11-28T02:11:19-05:00
summary:
bpo-42452: Improve colorsys.rgb_to_hls code (GH-23306)
Cache repeated sum and difference to make code slightly faster and easier to read.
files:
M Lib/colorsys.py
diff --git a/Lib/colorsys.py b/Lib/colorsys.py
index b93e3844067e4..0f52512a67d87 100644
--- a/Lib/colorsys.py
+++ b/Lib/colorsys.py
@@ -75,17 +75,18 @@ def yiq_to_rgb(y, i, q):
def rgb_to_hls(r, g, b):
maxc = max(r, g, b)
minc = min(r, g, b)
- # XXX Can optimize (maxc+minc) and (maxc-minc)
- l = (minc+maxc)/2.0
+ sumc = (maxc+minc)
+ rangec = (maxc-minc)
+ l = sumc/2.0
if minc == maxc:
return 0.0, l, 0.0
if l <= 0.5:
- s = (maxc-minc) / (maxc+minc)
+ s = rangec / sumc
else:
- s = (maxc-minc) / (2.0-maxc-minc)
- rc = (maxc-r) / (maxc-minc)
- gc = (maxc-g) / (maxc-minc)
- bc = (maxc-b) / (maxc-minc)
+ s = rangec / (2.0-sumc)
+ rc = (maxc-r) / rangec
+ gc = (maxc-g) / rangec
+ bc = (maxc-b) / rangec
if r == maxc:
h = bc-gc
elif g == maxc:
More information about the Python-checkins
mailing list