Reuse Name
instances to improve performance
#106
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.
I have a project with a lot of components and
dom_id
ordom_class
being called hundreds of times on each page load.This PR optimizes the performance of these functions by reusing
Name
instances such that the name for a particular class only ever has to be calculated once.The calculation (in the
Tonysm\TurboLaravel\Models\Naming\Name::build
method) is actually somewhat expensive when done in large quantities – mostly as a result of the use of theconfig
helper inremoveRootNamespaces
(resolving from the container each time adds up), and the call toStr::plural
.Ideally the public properties of the
Name
class would be madereadonly
so these instances are immutable, however would require dropping PHP 8.0 support.