Partially rewrite JsonApi\Hydrator to improve performance #18
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.
Description
I (partially) rewrote the JsonApi\Hydrator to improve the performance.
Motivation and context
Hydrating a document with 2.000 items with relationships took about five minutes. After this change it is reduced to around two seconds. 🎉
Performance was improved by using a 'lookup table' to find the hydrated items instead of looping over all items for every relationship e.g. 2.000 * 2.000.
How has this been tested?
This has been tested/profiled in a private project with timings from laravel-debugbar. Please see this example json.
Types of changes
What types of changes does your code introduce? Put an
x
in all the boxes that apply:Checklist: