mirror of
https://github.com/PR0M3TH3AN/TORCH.git
synced 2026-10-27 07:51:52 +00:00
Refactor lock filtering to use Set lookups instead of linear scans
Optimized `cmdCheck` and `cmdList` in `src/lib.mjs` by replacing O(N*M) linear scans with O(N) Set lookups. - Introduced `rosterSet` and `excludedAgentsSet` to replace `Array.includes()` calls with `Set.has()`. - Benchmark showed ~99% performance improvement (from ~280ms to ~2ms for 10k agents and 2k locks). - Verified with existing tests and custom benchmark. Co-authored-by: PR0M3TH3AN <[email protected]>
This commit is contained in:
1 parent
695adb6dc9
commit
0a7f64d1dc
1 file changed
+7
-4
+7
-4
@@ -59,10 +59,12 @@ export async function cmdCheck(cadence) {
|
||||
const locks = await queryLocks(relays, cadence, dateStr, namespace);
|
||||
const lockedAgents = [...new Set(locks.map((l) => l.agent).filter(Boolean))];
|
||||
const roster = getRoster(cadence);
|
||||
const rosterSet = new Set(roster);
|
||||
|
||||
const excludedAgents = [...new Set([...lockedAgents, ...pausedAgents])];
|
||||
const unknownLockedAgents = lockedAgents.filter((agent) => !roster.includes(agent));
|
||||
const available = roster.filter((a) => !excludedAgents.includes(a));
|
||||
const excludedAgentsSet = new Set([...lockedAgents, ...pausedAgents]);
|
||||
const excludedAgents = [...excludedAgentsSet];
|
||||
const unknownLockedAgents = lockedAgents.filter((agent) => !rosterSet.has(agent));
|
||||
const available = roster.filter((a) => !excludedAgentsSet.has(a));
|
||||
|
||||
const result = {
|
||||
namespace,
|
||||
@@ -237,8 +239,9 @@ export async function cmdList(cadence) {
|
||||
}
|
||||
|
||||
const roster = getRoster(c);
|
||||
const rosterSet = new Set(roster);
|
||||
const lockedAgents = new Set(locks.map((l) => l.agent).filter(Boolean));
|
||||
const unknownLockedAgents = [...lockedAgents].filter((agent) => !roster.includes(agent));
|
||||
const unknownLockedAgents = [...lockedAgents].filter((agent) => !rosterSet.has(agent));
|
||||
const available = roster.filter((a) => !lockedAgents.has(a));
|
||||
|
||||
if (unknownLockedAgents.length > 0) {
|
||||
|
||||
Reference in new issue
Block a user