Skip to content

Commit 7b555b0

Browse files
committed
perf: replace md5 with spark-md5
spark-md5 is a faster implementation of md5 and this significantly boosts our evaluation performance (2x for a simple 50/50 feature gate).
1 parent b9a9b53 commit 7b555b0

File tree

3 files changed

+15
-35
lines changed

3 files changed

+15
-35
lines changed

package.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@
4444
"@types/jest": "^29.5.11",
4545
"@types/js-base64": "^3.3.1",
4646
"@types/lodash": "^4.17.5",
47-
"@types/md5": "^2.3.2",
4847
"@types/semver": "^7.5.6",
48+
"@types/spark-md5": "^3.0.5",
4949
"@types/uuid": "^10.0.0",
5050
"@typescript-eslint/eslint-plugin": "^5.13.0",
5151
"@typescript-eslint/parser": "^5.13.0",
@@ -71,10 +71,9 @@
7171
},
7272
"dependencies": {
7373
"js-base64": "^3.7.7",
74-
"md5": "^2.3.0",
7574
"pino": "^8.19.0",
7675
"semver": "^7.5.4",
76+
"spark-md5": "^3.0.2",
7777
"uuid": "^8.3.2"
78-
},
79-
"packageManager": "[email protected]+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
78+
}
8079
}

src/obfuscation.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import base64 = require('js-base64');
2-
import * as md5 from 'md5';
2+
import * as SparkMD5 from 'spark-md5';
33

44
export function getMD5Hash(input: string): string {
5-
return md5(input);
5+
return SparkMD5.hash(input);
66
}
77

88
export function encodeBase64(input: string) {

yarn.lock

Lines changed: 10 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -784,11 +784,6 @@
784784
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.5.tgz#e6c29b58e66995d57cd170ce3e2a61926d55ee04"
785785
integrity sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw==
786786

787-
"@types/md5@^2.3.2":
788-
version "2.3.2"
789-
resolved "https://registry.npmjs.org/@types/md5/-/md5-2.3.2.tgz"
790-
integrity sha512-v+JFDu96+UYJ3/UWzB0mEglIS//MZXgRaJ4ubUPwOM0gvLc/kcQ3TWNYwENEK7/EcXGQVrW8h/XqednSjBd/Og==
791-
792787
"@types/node@*":
793788
version "20.11.5"
794789
resolved "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz"
@@ -801,6 +796,11 @@
801796
resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz"
802797
integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==
803798

799+
"@types/spark-md5@^3.0.5":
800+
version "3.0.5"
801+
resolved "https://registry.yarnpkg.com/@types/spark-md5/-/spark-md5-3.0.5.tgz#eddec8639217e518c26e9e221ff56bf5f5f5c900"
802+
integrity sha512-lWf05dnD42DLVKQJZrDHtWFidcLrHuip01CtnC2/S6AMhX4t9ZlEUj4iuRlAnts0PQk7KESOqKxeGE/b6sIPGg==
803+
804804
"@types/stack-utils@^2.0.0":
805805
version "2.0.3"
806806
resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz"
@@ -1382,11 +1382,6 @@ char-regex@^1.0.2:
13821382
resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz"
13831383
integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==
13841384

1385-
1386-
version "0.0.2"
1387-
resolved "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz"
1388-
integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==
1389-
13901385
chrome-trace-event@^1.0.2:
13911386
version "1.0.3"
13921387
resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz"
@@ -1513,11 +1508,6 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3:
15131508
shebang-command "^2.0.0"
15141509
which "^2.0.1"
15151510

1516-
1517-
version "0.0.2"
1518-
resolved "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz"
1519-
integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==
1520-
15211511
cssom@^0.5.0:
15221512
version "0.5.0"
15231513
resolved "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz"
@@ -2397,11 +2387,6 @@ is-boolean-object@^1.1.0:
23972387
call-bind "^1.0.2"
23982388
has-tostringtag "^1.0.0"
23992389

2400-
is-buffer@~1.1.6:
2401-
version "1.1.6"
2402-
resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz"
2403-
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
2404-
24052390
is-callable@^1.1.4, is-callable@^1.2.4:
24062391
version "1.2.4"
24072392
resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz"
@@ -3160,15 +3145,6 @@ [email protected]:
31603145
dependencies:
31613146
tmpl "1.0.5"
31623147

3163-
md5@^2.3.0:
3164-
version "2.3.0"
3165-
resolved "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz"
3166-
integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==
3167-
dependencies:
3168-
charenc "0.0.2"
3169-
crypt "0.0.2"
3170-
is-buffer "~1.1.6"
3171-
31723148
merge-stream@^2.0.0:
31733149
version "2.0.0"
31743150
resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz"
@@ -3808,6 +3784,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
38083784
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
38093785
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
38103786

3787+
spark-md5@^3.0.2:
3788+
version "3.0.2"
3789+
resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.2.tgz#7952c4a30784347abcee73268e473b9c0167e3fc"
3790+
integrity sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==
3791+
38113792
split2@^4.0.0:
38123793
version "4.2.0"
38133794
resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4"

0 commit comments

Comments
 (0)