APIv4 - Fix performance drag caused by getInfoItem calling the API #21920
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.
Overview
Fixes a performance bottleneck in APIv4 which was in some cases slowing SearchKit to a crawl (in the unreleased master branch).
Before
Searches might take 20 seconds to return results.
After
Back to under 2 seconds.
Comments
I noticed this while testing #21820
Technical Details
The
CoreUtil::getInfoItem
function is sometimes called thousands of times per request, e.g. for every cell in a searchKit display table. Going through the API wrapper that many times is a considerable (+10 sec) drag on performance.Instead of calling Entity.get, we can just read directly from the cache where it stores its data.