HermitCrab: a restricted clitic adds 17.5% work steps, mostly host search that repeats per MSA (measured on the port)

Đang mở
#610 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

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
48/100
Loại issue
Tái cấu trúc
Độ 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 by reading the FieldWorks/HC loader and related issues #599 and #600 to understand the existing rule indexing and root-search cache. Then investigate whether rules with identical shapes across MSAs can share a clitic rule. Done means measuring work steps on a grammar with multi-MSA clitics and reporting the change.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Claude-drafted.

One restricted enclitic adds 1,075,012 work steps (+17.5%) to a real grammar's word lists, and most of it is host search, not the clitic's own rules. The enclitic is a one-segment allomorph of another clitic, restricted to / [V] _. Measured on the PanGloss port (same work-step counting as hc.dll), not on hc.dll. The data is private; aggregates only.

What we know (work steps over 7,969 word occurrences):

  • 82.6% of the added steps fall on words ending vowel + g; 13.3% on words not ending in g.
  • By object: 51.2% host search (root index and existing rules), 13.4% the clitic's own rules, 35.4% unattributed (18.7% under v8 counters).
  • As a standalone one-MSA particle it adds about half as much (held +8.3% against +17.3%). Inferred: the port's loader compiles one clitic rule per MSA (two here), and each repeats the host search.
  • An environment pre-check saves at most about 4% (42,779 steps).
  • In the port, the edge-segment rule index plus the per-word root-search cache gave -12.1% on base lists and -13.1% with the clitic.

Not known: whether the C# loader also makes one clitic rule per MSA.

Proposed change (C#): check whether the FieldWorks/HC loader can share one clitic rule across MSAs whose shapes are identical, so the host search runs once. Measure the change in work steps on a grammar with multi-MSA clitics.

Related: #599, #600, #564, #601 (all open). PanGloss: sillsdev/PanGloss#90 (source, open); PRs sillsdev/PanGloss#95 and #96 (merged) are the index and cache. PRs sillsdev/PanGloss#101 and #102 (open) fix the loader making one copy per MSA for ad hoc allomorph prohibitions: the same mechanism, but a correctness fix, not a speedup.

Next: count host-search steps for a multi-MSA clitic on hc.dll before changing the loader.


Evidence -- method and tables

Port at PanGloss 0.12.1, pangloss batch --stats --work-columns, one thread. 7,969 occurrences: 7,206 held, 563 dev, 200 non-words. Arms: the grammar without the enclitic, and with it.

Set of steps Added Share
Total, base 6,132,123 to 7,207,135 1,075,012 +17.5%
Words ending vowel + g 888,370 82.64%
Words ending ng or other consonant + g 43,417 4.04%
Words not ending in g 143,225 13.32%
By object Steps Share
Root and existing-rule host search 550,182 51.18%
The two clitic rules 143,806 13.38%
Unattributed (v7 counters) 381,024 35.44%
Unattributed (v8 counters) 201,456 18.74%

The pre-check estimate skips the clitic branch for the 638 g-final words where [V] _ fails: 43,417 gross, 42,779 net at about 1 step per check, against 1,075,012 added.

Standalone encoding: held +8.34%, dev +11.49%, non-words +16.44%, against +17.31% held for the allomorph encoding. These are separate encodings, so the halving is not isolated to MSA count.

Index and cache on the port (PanGloss 0.12.2 changelog): base 6,132,123 to 5,392,090 (-12.07%); with the clitic 7,207,135 to 6,265,316 (-13.07%). The index alone gives 5,395,400 on base and 6,340,178 with the clitic (-12.0% both).

Sources
Ngôn ngữ chính
C#
Star
29
Fork
16
Merge trung bình
5 ngày 20 giờ
Pull request đã merge (30 ngày)
11

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

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của sillsdev/machine

Tất cả issue của sillsdev/machine

Issue tương tự

Thêm issue về C#

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.