HermitCrab analysis: one-template battery is 45% of work on a private grammar; FST-derived precheck ceiling unmeasured
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 38/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- csharp
- Lĩnh vực
- performance
Hướng nghiên cứu
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.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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)
- Open lead 1: search-cost round L325-L331 (lines 325–331); v1 held cost: L315-L317 (lines 315–317).
- Table row: ledger row 22, L113 (line 113); mechanism: docs/optimizations/edge-segment-prefilter.md.
- Verdict row for the FST-derived precheck: L303 (line 303).
- Ngôn ngữ chính
- C#
- Star
- 29
- Fork
- 16
- Merge trung bình
- 4 ngày 11 giờ
- Pull request đã merge (30 ngày)
- 14
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của sillsdev/machine
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày
-
HermitCrab: one partial rule switches off the final-template prune for the whole grammar; Mbugwe chaanjiyɛ never finishesCó thể đã có người làm @johnml1135 đã nhận hôm nay. Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Hermit Crab performance
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Hermit Crab performance
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của sillsdev/machine
Issue tương tự
-
bug emitter:client:csharp
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
microsoft/typespec#12572 · 1 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
needs-area-label
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 2 ngày
-
AWS Lambda: KeyNotFoundException drops HTTP-triggered transactions when allowAllHeaders is disabledĐang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
newrelic/newrelic-dotnet-agent#3949 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area-networking
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
dotnet/aspnetcore#70545 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 87/100
Maintainer thường phản hồi trong vòng 1 ngày