Perf: improve speedtest hosts

This commit is contained in:
SukkaW 2024-06-30 00:32:26 +08:00
parent 175ba65127
commit 2d9c401219

View File

@ -13,7 +13,7 @@ import { readFileIntoProcessedArray } from './lib/fetch-text-by-line';
import { TTL, deserializeArray, fsFetchCache, serializeArray } from './lib/cache-filesystem';
import { createMemoizedPromise } from './lib/memo-promise';
import { setAddFromArrayCurried } from './lib/set-add-from-array';
import { createTrie } from './lib/trie';
const s = new Sema(2);
@ -90,9 +90,8 @@ const getPreviousSpeedtestDomainsPromise = createMemoizedPromise(async () => {
});
export const buildSpeedtestDomainSet = task(import.meta.main, import.meta.path)(async (span) => {
// Predefined domainset
/** @type {Set<string>} */
const domains = new Set<string>([
const domainTrie = createTrie(
[
// speedtest.net
'.speedtest.net',
'.speedtestcustom.com',
@ -179,12 +178,15 @@ export const buildSpeedtestDomainSet = task(import.meta.main, import.meta.path)(
'mensura.cdn-apple.com', // From netQuality command
// OpenSpeedtest
'open.cachefly.net'
]);
],
true,
true
);
await span.traceChildAsync(
'fetch previous speedtest domainset',
() => getPreviousSpeedtestDomainsPromise()
.then(setAddFromArrayCurried(domains))
.then(prevDomains => prevDomains.forEach(domainTrie.add))
);
await new Promise<void>((resolve, reject) => {
@ -222,7 +224,7 @@ export const buildSpeedtestDomainSet = task(import.meta.main, import.meta.path)(
pMap[keyword] = span.traceChildAsync(`fetch speedtest endpoints: ${keyword}`, () => querySpeedtestApi(keyword)).then(hostnameGroup => {
return hostnameGroup.forEach(hostname => {
if (hostname) {
domains.add(hostname);
domainTrie.add(hostname);
}
});
});
@ -245,7 +247,7 @@ export const buildSpeedtestDomainSet = task(import.meta.main, import.meta.path)(
}).catch(() => reject);
});
const deduped = span.traceChildSync('sort result', () => sortDomains(domainDeduper(Array.from(domains))));
const deduped = span.traceChildSync('sort result', () => sortDomains(domainDeduper(domainTrie)));
const description = [
...SHARED_DESCRIPTION,