Optimizes the ModelsResolver class#345
Open
jimrubenstein wants to merge 1 commit intoalgolia:masterfrom
Open
Conversation
Model resolver class was performing an O(n^2) array search for populating the scoutMetadata on the result model. In some of our queries, this was taking upwards of 4 seconds to return. This update changes the strategy for populating that data to using a map, and cuts the iterations on the instances collection to a single iteration (to generate the map), instead of the length of the hits collection.
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.
Describe your change
Improves the performance of populating results in the ModelResolver class
What problem is this fixing?
ModelResolver was executing a ~O(n^2) loop for populating scout metadata and building the results collection.
This was causing some scout searches to take 5+ seconds for us.
This fix changes the result collection construction to ~O(n), yielding a 100%-500% speed improvement in our local tests.