activeloopai / activeloopai/hivemind

Perf: suffix-keyed reverse index for matchPythonSuffix (avoid O(files) scan per import)

Đang mở
#236 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
TypeScript
Star
1.6k
Fork
107
Merge trung bình
17 giờ 30 phút
Pull request đã merge (30 ngày)
6

Mô tả

## Context

`matchPythonSuffix` in `src/graph/resolve/cross-file.ts` resolves a dotted-absolute Python import by suffix-matching against the known-files set. For each lookup it does up to 4 target forms × a full linear scan of `knownFiles`:

```ts
for (const t of targets) { // 4 target forms
if (knownFiles.has(t)) return t;
for (const f of knownFiles) { // O(files) scan
if (f.endsWith(`/${t}`)) { ... }
}
}
```

So cross-file resolution over a Python repo is `O(calls × files × 4)`. Fine at current scale (graphiti = 117 files, instant), but it degrades on large monorepos.

## Proposal

Build a suffix-keyed reverse index **once** (alongside `buildExportIndex`), mapping every path suffix (`mod.py`, `sub/mod.py`, `pkg/sub/mod.py`) → list of files, then make `matchPythonSuffix` an O(1) lookup + ambiguity check with no per-call scan.

## Notes
- Raised by CodeRabbit on PR #228 (Perf, Medium). Deferred from that PR since it's an optimization, not a correctness fix.
- Keep the existing high-confidence semantics: exact (root-anchored) wins; single suffix match wins; multiple → drop (ambiguous).

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

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.