aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBennett <[email protected]>2022-10-13 14:48:17 -0400
committerGitHub <[email protected]>2022-10-13 14:48:17 -0400
commitedaed61612597d55af691963fa99b74ab0813e8e (patch)
treedc4d51cc7c0cec57840bbe29dc47728d82230ead
parent97fc8174b9df72d7e2c87b97b72de9e053b7356c (diff)
downloadSponsorBlock-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.ts27
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
+}