瀏覽代碼

Perf: use new hostname trie

SukkaW 1 年之前
父節點
當前提交
a486910a26
共有 2 個文件被更改,包括 6 次插入6 次删除
  1. 1 1
      Build/lib/domain-deduper.ts
  2. 5 5
      Build/lib/stable-sort-domain.ts

+ 1 - 1
Build/lib/domain-deduper.ts

@@ -3,7 +3,7 @@ import { createTrie } from './trie';
 export function domainDeduper(inputDomains: string[], toArray?: true): string[];
 export function domainDeduper(inputDomains: string[], toArray: false): Set<string>;
 export function domainDeduper(inputDomains: string[], toArray = true): string[] | Set<string> {
-  const trie = createTrie(inputDomains);
+  const trie = createTrie(inputDomains, true);
   const sets = new Set(inputDomains);
 
   for (let i = 0, len1 = inputDomains.length; i < len1; i++) {

+ 5 - 5
Build/lib/stable-sort-domain.ts

@@ -28,10 +28,10 @@ const compare = (a: string, b: string) => {
 };
 
 export const sortDomains = (inputs: string[], gorhill: PublicSuffixList) => {
-  const domains = inputs.reduce<Map<string, string | null>>((acc, cur) => {
+  const domains = inputs.reduce<Map<string, string>>((acc, cur) => {
     if (!acc.has(cur)) {
       const topD = gorhill.getDomain(cur[0] === '.' ? cur.slice(1) : cur);
-      acc.set(cur, topD === cur ? null : topD);
+      acc.set(cur, topD);
     };
     return acc;
   }, new Map());
@@ -39,10 +39,10 @@ export const sortDomains = (inputs: string[], gorhill: PublicSuffixList) => {
   const sorter = (a: string, b: string) => {
     if (a === b) return 0;
 
-    const $a = domains.get(a);
-    const $b = domains.get(b);
+    const $a = domains.get(a)!;
+    const $b = domains.get(b)!;
 
-    if ($a == null || $b == null) {
+    if ($a === a && $b === b) {
       return compare(a, b);
     }
     return compare($a, $b) || compare(a, b);