Skip to content

rules: forbid raw index vectors as persistent cache keys - #12

Merged
shinaoka merged 1 commit into
mainfrom
rules-index-vector-cache-keys
Aug 14, 2026
Merged

rules: forbid raw index vectors as persistent cache keys#12
shinaoka merged 1 commit into
mainfrom
rules-index-vector-cache-keys

Conversation

@shinaoka

Copy link
Copy Markdown
Member

Summary

Adds a performance rule, in the common checklist plus Rust and Julia specializations, forbidding raw index vectors (Vec<usize>, Vector{Int}) as keys of persistent or hot-path caches.

Rationale: every lookup pays an O(length) hash and equality walk, every insert clones the vector, and retained keys can rival the cached payload in memory. The required alternative is a mixed-radix flat integer key with the width selected from the index-space size (u64, u128, then extended integers, as in tensor4all-simplett's FlatIndexer), or stable interned IDs when the key space is unbounded.

Motivated by tensor4all/tensor4all-rs#626 and tensor4all/tensor4all-rs#627, where TTCache's persistent maps still key by Vec<usize>.

🤖 Generated with Claude Code

Raw Vec<usize> / Vector{Int} keys pay an O(length) hash and equality walk
per lookup, clone on insert, and retain O(length) memory per entry. Require
mixed-radix flat integer encodings (width selected from the index-space
size) or stable interned IDs instead. Motivated by tensor4all-rs #626/#627,
where TTCache's persistent maps still key by Vec<usize>.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@shinaoka
shinaoka merged commit 8bee506 into main Aug 14, 2026
1 check passed
@shinaoka
shinaoka deleted the rules-index-vector-cache-keys branch August 14, 2026 14:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant