Faster (and safer) equal implementation #685
Merged
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.
Hello! Love dnd-kit, it's working great in my application.
I'm dealing with quite a lot of data - benchmarking with 40,000 items in a sortable list. dnd-kit is mostly not a bottleneck, but I have noticed that, since I'm using uuids and quite a lot of items, the
isEqual
method takes up an appreciable amount of the performance profile, and the size of the strings generated can trigger a GC.Hence: a non-join based isEqual implementation. I did bench this to make sure that it resolves the performance issues - seems to, about a 15x gain, not counting the reduced memory pressure.
Benchmark here
This also fixes a bug in dnd-kit, in which you could have different ID sequences that join to the same thing. For example, if you had: [a, bb, c], and the updated item ids were [ab, b, c] or any other combination of (abbc) then you'd get a false 'equal' through the join-based method.