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.
Hey! Thanks for creating this repository, I've been meaning to create a benchmark like this one for a long time but never took the time to do so.
I think that your initial benchmark is a bit skewed because simple functions taking always the same input get JIT compiled away into very few instructions and don't reflect real world use cases so I took the liberty of creating two more examples using random inputs:
ts-pattern is 250x slower on this benchmark. (always the same input)
ts-pattern is ~10x slower with random numbers.
ts-pattern is ~30x slower with random data structures.
The fact that ts-pattern is always slower is to be expected, given that it provides a nicer DX by supporting any kind of pattern nested in any possible way, property selection, etc. At the end of the day, data validation and conditional statements aren't likely to be the performance bottleneck of an app, so IMHO that's a tradeoff worth taking in many cases