callstack / callstack/agent-device
perf(scroll-until): build the snapshot visibility index once per pass
- Lingua principale
- TypeScript
- Stelle
- 4.6k
- Fork
- 299
- Merge medio
- 10h 42m
- PR unite (30g)
- 493
Descrizione
## Waste
`src/daemon/scroll-until.ts:169` evaluates `.some((node) => evaluateIsPredicate(...))` per pass; `predicates.ts:77` builds a fresh `createSnapshotVisibility(nodes)` per candidate. The rule in `packages/contracts/src/snapshot-visibility.ts:135-141` (#1970) says N candidates share one index. `resolveSelectorPipeline`, called just above, builds an equivalent index and discards it (`resolve.ts:229`). N is the matched selector set (1-5), so this is not a measurable wall-clock win; it is a correctness-of-shape fix. Added in #2436.
## Fix
Hoist the index out of the `.some()` (one per pass). Thread the pipeline's index into the predicate if the seam is already there; otherwise leave that for the H2 capture-kit move. Three lines; no measurement gate, no perf claim.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia da src/daemon/scroll-until.ts:169, quindi esamina predicates.ts:77 e resolve.ts:229 insieme a packages/contracts/src/snapshot-visibility.ts:135-141. Verifica in che modo resolveSelectorPipeline espone il suo indice e fai in modo che il pass riutilizzi un unico indice di visibilità dello snapshot invece di ricostruirlo per ogni candidato; il lavoro è completato quando l'indice viene creato una sola volta per pass, senza che sia richiesta alcuna dichiarazione sulle prestazioni.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- performance
- Tipo di issue
- Refactoring
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Attiva
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 78/100