HermitCrab analysis: measure required-slot look-ahead on the #546 shared walk
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 20/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- csharp
- Ambito
- performance, testing
Direzione di ricerca
Start with #561 and PR #546, then inspect AnalysisAffixTemplatesRule.Walk and .Apply and the census harness modes. Add the four measurement arms described in the issue, including the stress fixture and six-template variant, and report deterministic slot events plus the residual. Confirm the conformance verdicts remain identical to PR #480; work is blocked on #561 and PR #546.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
PR #546 shares trailing slot batches across templates but only in untraced sequential walks, and it is unknown how much of its saving survives once required-slot look-ahead (#561) removes templates early. The trigger is any grammar with several templates sharing trailing slots and required markers (Mbugwe, Sena, Aweti). The cost of not measuring is landing two changes that overlap, or leaving shared-slot work uncounted.
Depends on #561 (required-slot look-ahead) and on PR #546. Nothing here can start until #561 reports a sound shadow result and #546 is merged or its branch is usable as a base.
Problem (census, steps)
Census: 92.8-96.9% of template-slot events on Aweti, Mbugwe and Sena are in rules shared by two or more templates. #546 removes the trailing-aligned part (C# batch counts: Mbugwe sample -19.3%, Sena sample -31.4%, from #546's own measurement). #546 is inert under tracing (AnalysisAffixTemplatesRule.Apply falls back to base.Apply when IsTracing), so it does nothing for Try-a-Word-style traced parses and the traced census does not see it.
Proposed change
Not a new prune: a measurement, plus a small hook if it pays. On the #546 walk (AnalysisAffixTemplatesRule.Walk), apply the look-ahead of #561 per trie node: skip a child when no template still admitted under it passes the look-ahead for its remaining required slots. Report the shared-slot work that #546 plus #561 leave (the residual).
Soundness
As #561, per template. The trie only reorders shared work; the remaining-slot set of a template at a trie node is its slots from that depth down to 0.
Memory bound
As #561 (grammar-sized, under 100 KB). Any further sharing of non-trailing slots needs a key on the shape, which is a memo and is closed by ledger row 29 and the owner rule, so the residual is reported as a ceiling only and not proposed.
Measurement plan
Needs one harness mode that sets IsTracing false only for the frame of AnalysisAffixTemplatesRule.Apply (the trick the census uses for merging), so the trie walk runs while slot-rule events are still counted. Four arms in census and censusmerge modes, same binary set: master; master + #561; master + #546; master + #546 + #561. Same grammars and sampling as #561, plus its stress fixture and a variant where 6 templates share their trailing 3 slots. Report slot events per arm and the residual after #546 + #561.
Kill criterion
If #561 saves under 3% of slot events on the #546 walk for every grammar where it saved over 5% on master, the two overlap and only one should land; report which. Expected value is uncertain until #561 reports.
Related
- #561, PR #546 (hard dependencies), PR #534 (trace nodes; relevant only because #546 is untraced-only).
- PR #490: research record. PR #480: conformance suite; verdicts must be identical.
- Units: deterministic steps, never ms. Owner constraint: no memo or cache.
🤖 Generated with Claude Code
- Lingua principale
- C#
- Stelle
- 29
- Fork
- 16
- Merge medio
- 6g 13h
- PR unite (30g)
- 12
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di sillsdev/machine
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement Hermit Crab
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
I maintainer di solito rispondono entro 1 giorno
-
HermitCrab analysis: ordered and anchored required-slot look-ahead (v2)Forse già presa Una pull request collegata a questa issue è aperta o già unita. Apertaenhancement Hermit Crab
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement Hermit Crab
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
sillsdev/machine#565 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
HermitCrab analysis: port the edge-segment prefilter (time-only, 0 steps)Forse già presa Una pull request collegata a questa issue è aperta o già unita. Apertaenhancement Hermit Crab
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di sillsdev/machine
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
area: core priority: low type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
RicoSuter/Namotion.Interceptor#863 ·
I maintainer di solito rispondono entro 1 giorno
-
area-cli
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
0.3.0
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 2 giorni