Match apply rules against a lookup table instead of searching #401
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.
Previously, every
@apply
call would traverse the entire CSS tree looking for a matching class. This is dumb since the CSS tree doesn't change (except for the contents of classes using@apply
).This PR changes this to build a lookup table at the beginning of the whole process so classes can be picked out by index instead of searching. This makes everything a lot faster (10,000
@apply
rules dropped from 158s to 8s on my machine.)The one risk here is if anyone was previously using multi-level
@apply
calls, like:Previously this would work (by coincidence, because these rules happened to be in the right order for it to work), but now it won't. This has never been "supported" so I'm not too worried about it, but we can certainly make the failure around this more explicit in a future change.