Add option for HashIndex & UniqueHashIndex to hash lazily #12
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.
This is useful to me, and could be useful to others. I often have UniqueHashIndexes that never get indexed into into (either the indexing is more often happening on another dimension, or the indexing is a nice to have for interactive sessions).
This could also give us cheap views of HashIndex AcceleratedArrays - just take a view of the parent array and construct a lazy HashIndex from it.
Only downside is that there now has to be a small check every time the dictionary is accessed. This is acceptable to me, though it could maybe prevent certain optimisations in very loopy indexing code (the dictionary access might not get hoisted out of the loop)?
If it's a big deal, we could make these lazy variants separate types.
In terms of the code - tossed up whether to have a
Bool
field or aUnion{D,Nothing}
dictionary. The latter is nicer but seemed a little fiddlier.