Skip to content

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

Open

Description

@johnml1135

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 perf(hermitcrab): share trailing analysis template slot batches #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):

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). Change C measured 0 on the grammars with one template (L222-L223).

Sources -- pinned to 2eba2f5 (closed PR #490 record)

Activity

  1. changed the title [-]HermitCrab analysis: FST-derived precheck before slot-rule traversal (ceiling unmeasured)[/-] [+]HermitCrab analysis: one-template battery is 45% of work on a private grammar; FST-derived precheck ceiling unmeasured[/+] on Oct 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    • Status
      🆕 New

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions