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.
Howdy! I was chatting with my good friend @jimjbrettj and was inspired to take a look at compilers and specifically the Huff compiler because it was so simple. So I thought I'd make some baby contributions.
The main contribution here is isolated to the Lexer. The primary contribution here was to remove some clones that happen super frequently. There is a downside to this as now we're matching on manually typed strings as opposed on matching on an enum. Feel free to close this PR if matching on strings isn't cool with y'all!
Noteable: Lexer is 50% faster in benchmarks. Benchmarks ran on MacOS Monterey (2.3 GHz Quad-Core Intel Core i7 with 32GB RAM)
![Screen Shot 2023-04-03 at 3 15 55 PM](https://user-images.githubusercontent.com/6364934/229607696-aa3b3c9a-8b8e-44f4-ad91-1787ffb94629.png)
![Screen Shot 2023-04-03 at 3 17 48 PM](https://user-images.githubusercontent.com/6364934/229607719-172bcda7-b3ce-456f-8f1d-d00eb22f9278.png)
Here is the performance difference:
Before:
After: