perf: reduce the number of traversals through posts #5119
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.
What does it do?
Calling
post.tags[0].length
is slow, because Hexo will try to fetch all posts associated with one tag, which is unnecessary.Tested with 8000 posts (copy https://github.com/SukkaLab/hexo-many-posts 16 times, with https://github.com/hexojs/hexo-starter), this patch will reduce the time of
hexo g
from ~17min to ~11minTODO:
PostTag.find
is also slow. Need to replace it with a better data structure in the future.See #2579 (comment)
See also #3624
Screenshots
Pull request tasks