HermitCrab analysis: one-template battery is 45% of work on a private grammar; FST-derived precheck ceiling unmeasured

Aperta
#604 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
38/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
csharp
Ambito
performance

Direzione di ricerca

Start with docs/hermitcrab-2026-10-21-search-cost-round.md, lines 319–330, on the docs/hc-optimization-ledger branch. Instrument zero-match traversal work in steps on single-template grammars and measure its share of parser work; the issue says to build a precheck only if that share is material.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Claude-drafted.

On a one-template grammar the template battery is 45% of parser work (a private grammar variant, v1, held list; HC-Rust work steps, before change C), and the shipped shared-slot-batch change cannot help it. An FST-derived precheck could reject slot rules before traversal, but its ceiling is not measured.

Status: open research lead, not built.

What we know (HC-Rust port, work steps; the lead is tagged as having a C# analogue):

  • Battery share of parser work before change C: v1 held 45%, Mbugwe 61%, Sena 23%, Amharic 21%, private base 8%, private deletion variant 6.5%, Indonesian 0 (no templates).
  • Sharing trailing slot batches (change C, ported as #546) saves 0 work on Amharic and every private variant (one template each) and on Indonesian (no templates), so there is nothing to share.
  • After fix A, v1's held list still costs 105.8M work units, 45% of it in the one-template battery.
  • The nearest shipped check is the edge-segment prefilter (ledger row 22). It tests only a rule's first and last segments and was judged on traversals. This lead derives its condition from the whole compiled matcher and is judged in work steps, since a traversal charges per arc.

Not known: the ceiling, meaning the work spent in zero-match traversals on single-template grammars.

Proposed change: instrument zero-match traversal work in steps on single-template grammars first. Build the precheck only if that share is material.

Related: #564 (open), #574 (PR, open), #599 (open), #546 (PR, open). PanGloss: sillsdev/PanGloss#106 (pointer, open). The required-slot look-ahead in sillsdev/PanGloss#25 and #66 is a different mechanism (state not checked).

Next: add a zero-match traversal work counter and report it per single-template grammar.


Evidence -- battery share by grammar

Battery share of all parser work, HC-Rust, before change C (L191-L201 (lines 191–201)):

Grammar Battery share
Mbugwe 61%
Private v1, held 45%
Sena 23%
Amharic 21%
Private base 8%
Private, loaded from C#'s export 9%
Private deletion variant 6.5%
Indonesian 0

Change C's static census found no sharing possible on Amharic (50 to 50) and the private project (30 to 30), one template each (L204-L207 (lines 204–207)). Change C measured 0 on the grammars with one template (L222-L223 (lines 222–223)).

Sources -- pinned to 2eba2f50 (closed PR #490 record)
Lingua principale
C#
Stelle
29
Fork
16
Merge medio
4g 11h
PR unite (30g)
14

Preparare l'ambiente

  • Nessun Dockerfile né file Docker Compose
  • Ha un modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di sillsdev/machine

Tutte le issue di sillsdev/machine

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.