Repository navigation
Fix restrict of a dense node by a list/tiny node - #172
Open
adamv-symbolica wants to merge 1 commit into
Open
adamv-symbolica wants to merge 1 commit into
adamv-symbolica wants to merge 1 commit into
Conversation
…rictor's branches `prestrict_abstract` scanned every child of the (up to 256 wide) dense `self` node and asked the list or tiny `other` node about each one, so a restriction by a sparse map cost O(width of the LHS) per node it passed through. It now intersects `self`'s mask with `other`'s branch mask and visits only the overlap, which is at most 2 bytes. `TinyRefNode` gets a real `node_branches_mask` to supply that mask. Adds benches/restrict.rs, sweeping LHS/RHS branching, depth below the cut-off on either side, cut-off depth, overlap, and LHS/RHS size. LHS branching 256 goes from 554 to 47 µs (flat in branching now), and a 1M key random LHS restricted by 64 keys from 37 to 3.8 µs. Adds an oracle test restricting wide maps by a few of their own paths, cut short, extended, diverging, or whole, through `restrict`, `WriteZipper::restrict` (including its status), and `restricting`. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Opus 5.5 xhigh:
prestrict_abstractscanned every child of the (up to 256 wide) denseselfnode and asked the list or tinyothernode about each one, so a restriction by a sparse map cost O(width of the LHS) per node it passed through. It now intersectsself's mask withother's branch mask and visits only the overlap, which is at most 2 bytes.TinyRefNodegets a realnode_branches_maskto supply that mask.Adds benches/restrict.rs, sweeping LHS/RHS branching, depth below the cut-off on either side, cut-off depth, overlap, and LHS/RHS size. LHS branching 256 goes from 554 to 47 µs (flat in branching now), and a 1M key random LHS restricted by 64 keys from 37 to 3.8 µs.
Adds an oracle test restricting wide maps by a few of their own paths, cut short, extended, diverging, or whole, through
restrict,WriteZipper::restrict(including its status), andrestricting.