diff options
author | Bennett <[email protected]> | 2022-10-13 14:48:17 -0400 |
---|---|---|
committer | GitHub <[email protected]> | 2022-10-13 14:48:17 -0400 |
commit | edaed61612597d55af691963fa99b74ab0813e8e (patch) | |
tree | dc4d51cc7c0cec57840bbe29dc47728d82230ead | |
parent | 97fc8174b9df72d7e2c87b97b72de9e053b7356c (diff) | |
download | SponsorBlock-edaed61612597d55af691963fa99b74ab0813e8e.tar.gz SponsorBlock-edaed61612597d55af691963fa99b74ab0813e8e.zip |
Reduced execution time of hexToRgb function by ~70%
Coded to use less regex.
On average, "indexOf" performs better than "parseInt."
-rw-r--r-- | src/utils/genericUtils.ts | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/src/utils/genericUtils.ts b/src/utils/genericUtils.ts index 144c0438..c7b50bdc 100644 --- a/src/utils/genericUtils.ts +++ b/src/utils/genericUtils.ts @@ -92,20 +92,17 @@ function getLuminance(color: string): number { return Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b)); } -/* From https://stackoverflow.com/a/5624139 */ -function hexToRgb(hex: string): {r: number; g: number; b: number} { - // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF") - const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; - hex = hex.replace(shorthandRegex, function(m, r, g, b) { - return r + r + g + g + b + b; - }); - - const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - return result ? { - r: parseInt(result[1], 16), - g: parseInt(result[2], 16), - b: parseInt(result[3], 16) - } : null; +/* Converts hex color to rgb color */ +const hexChars = "0123456789abcdef"; +function hexToRgb(hex: string): { r: number; g: number; b: number } | null { + if (hex.length == 4) + hex = "#" + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3]; + return /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex) + ? { + r: hexChars.indexOf(hex[1]) * 16 + hexChars.indexOf(hex[2]), + g: hexChars.indexOf(hex[3]) * 16 + hexChars.indexOf(hex[4]), + b: hexChars.indexOf(hex[5]) * 16 + hexChars.indexOf(hex[6]), + }: null; } /** @@ -156,4 +153,4 @@ export const GenericUtils = { generateUserID, indexesOf, objectToURI -}
\ No newline at end of file +} |