perf(utils): improve getProp(), setProp(), delProp(), setGetter() performance #68
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.
I found that on a huge site, the execution time of
String.split() / extractPropKey()
is very long.(https://github.com/hexojs/warehouse/blob/master/lib/util.js#L22-L24)
A benchmark using a hexo dummy website (with 300 posts): (clone https://github.com/SukkaLab/hexo-many-posts.git)
extractPropKey()
has been called for 7,201,086 times.For input values, they are all simple keys without "."
A benchmark using a hexo dummy website (with 1500 posts): (clone https://github.com/SukkaLab/hexo-many-posts.git 5 times)
extractPropKey()
: 19.78sSolution
This PR skips the call to
split()
and for-loops, handle simple keys directly.