[refactor] Refactoring of hyperscript.js and render.js, including performance improvements #2983
+29
−44
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.
Refactor hyperscript.js and render.js. In particular, the replacement of fix #2622 appears to have significantly improved the performance regression.
Description
This change is a refactoring aimed at improving code outlook and performance.
results of `npm run perf`
before (v2.2.8)
after ("rerender same tree" is improved)
cf. v2.0.4 (by backported test-perf.js and m.censor)
As shown above,
npm run perf
is improved, especially for "rerender same tree".I have also run test-perf.js in a real browser to see the performance improvement.
(If necessary, I would like to measure and tabulate performance later.)
Motivation and Context
As for performance, it is sufficiently sophisticated at v2.0.4. However, subsequent bug fixes and enhancements seem to have caused some performance regression. I measured the performance of v2.0.4 and later versions with
npm run perf
and found that 7c7d76d of #2578 has a negative impact on performance.The commit 7c7d76d fixes #2622 by changing setAttr(s), but I noticed that it can be resolved by hyperscript(execSelector) instead of setAttr(s).
How Has This Been Tested?
npm run test
Types of changes
Checklist