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.
The basics
The details
Resolves
Significantly speeds up adding and removing connections from the connection DB. This is especially important when dragging into or out of a large stack, because it's possible that all connections in the stack will need to be moved. This also makes insertion markers faster.
Dragging a block out of the spaghetti stack is now about a second faster (!)
Proposed Changes
Change the connection DB. Instead of attempting to subclass Array, we made it contain an actual array.
Reason for Changes
This means that array operations like
splice
are optimized by the browser/hopefully happening in C, and we're getting massive speed-up when the connection DB is large (> 1000).The connection DB was always supposed to be an Array, and the comments will tell you that it was one.
db instanceof Array
would return true, butArray.isArray(db)
would return false.More details on subclassing Array here for the curious.
Test Coverage
Tested in the playground on Chrome, with both spaghetti and normal dragging. I also updated JSunit tests, which are looking at the db internals.
Additional Information