Autoloader: Remove file check to improve performance.#15118
Conversation
|
Thank you for the great PR description! When this PR is ready for review, please apply the Scheduled Jetpack release: April 7, 2020. |
kbrown9
left a comment
There was a problem hiding this comment.
This looks good to me! I performed a quick test of the PR by using the updated Autoloader with Jetpack. As expected, no problems occurred.
I'll leave this open for a day in case anyone else wants to take a look at it before merging. When it's merged, we'll make sure this change is included in the new autoloader feature branch that's currently in progress.
|
Thanks for the quick review @kbrown9! |
jeherve
left a comment
There was a problem hiding this comment.
Tests are all good for this PR. Merging.
https://travis-ci.org/github/Automattic/jetpack/builds/666903637
* Initial changelog entry * Changelog: add #14904 * Changelog: add #14910 * Changelog: add #14913 * Changelog: add #14916 * Changelog: add #14922 * Changelog: add #14924 * Changelog: add #14925 * Changelog: add #14928 * Changelog: add #14840 * Changelog: add #14841 * Changelog: add #14842 * Changelog: add #14826 * Changelog: add #14835 * Changelog: add #14859 * Changelog: add #14884 * Changelog: add #14888 * Changelog: add #14817 * Changelog: add #14814 * Changelog: add #14819 * Changelog;: add #14797 * Changelog: add #14798 * Changelog: add #14802 * Changelog: add #13676 * Changelog: add #13744 * Changelog: add #13777 * Changelog: add #14446 * Changelog: add #14739 * Changelog: add #14770 * Changelog: add #14784 * Changelog: add #14897 * Changelog: add #14898 * Changelog: add #14968 * Changelog: add #14985 * Changelog: add #15044 * Changelog: add #15052 * Update to remove Podcast since it remains in Beta * Changelog: add #14803 * Changelog: add #15028 * Changelog: add #15065 * Changelog:add #14886 * Changelog: add #15118 * Changelog: add #14990 * Changelog: add #14528 * Changelog: add #15120 * Changelog: add #15126 * Changelog: add #15049 * Chanegelog: add #14852 * Changelog: add #15090 * Changelog: add #15138 * Changelog: add #15124 * Changelog:add #15055 * Changelog: add #15017 * Changelog: add #15109 * Changelog: add #15145 * Changelog:add #15096 * Changelog:add #15153 * Changelog: add #15133 * Changelog: add #14960 * Changelog: add #15127 * Changelog: add #15056 * Copy current changelog to changelog archive. * Clarify changelog description
https://github.com/Automattic/jetpack/blob/master/packages/autoloader/src/AutoloadGenerator.php#L68
Since we always optimize, remove expensive
file_exists()calls from autoloader.The current autoloader essentially enforces Composer's Optimization Level 1.
This PR seeks to enforce Optimization Level 2 as well.
In testing WooCommerce + WooCommerce Admin (which both use this autoloader), requests were seeing ~375 calls to
file_exists()and spending 1+ seconds wall time. With this change, those numbers are down to ~90 calls and ~0.2 seconds.I see that a refactor is underway.. this PR maps to this line in the refactor: https://github.com/Automattic/jetpack/pull/15106/files#diff-354912567a0f128335ec5caad8b6e3f8R124
Changes proposed in this Pull Request:
file_exists()beforerequire_onceJetpack autoloader enqueued classes.Is this a new feature or does it add/remove features to an existing part of Jetpack?
Testing instructions:
I could use some help defining testing instructions for this PR.
Locally, I manually made these changes to the autoloaders in both WooCommerce and WooCommerce Admin in order to verify the performance improvements.
Proposed changelog entry for your changes: