perf(syntax): reorder operator enum variants#7351
Merged
graphite-app[bot] merged 1 commit intomainfrom Nov 19, 2024
Merged
Conversation
Contributor
Your org has enabled the Graphite merge queue for merging into mainAdd the label “0-merge” to the PR and Graphite will automatically add it to the merge queue when it’s ready to merge. Or use the label “hotfix” to add to the merge queue as a hot fix. You must have a Graphite account and log in to Graphite in order to use the merge queue. Sign up using this link. |
This was referenced Nov 18, 2024
Member
Author
CodSpeed Performance ReportMerging #7351 will not alter performanceComparing Summary
|
890bdfa to
53997c2
Compare
03d2dad to
2ce3a79
Compare
2ce3a79 to
82b8c74
Compare
Member
Merge activity
|
53997c2 to
2534cde
Compare
Boshen
pushed a commit
that referenced
this pull request
Nov 19, 2024
Re-order enum variants of `AssignmentOperator`, `BinaryOperator` and `UnaryOperator`. * `Exponential` moved to after `Remainder` (so with the rest of the arithmetic operators). * `Shift*` operators follow arithmetic operators. * `AssignmentOperator::Bitwise*` ops moved to before `Logical*` ops (so all ops which correspond to `BinaryOperator`s are together). * `*Or` always before `*And`. * Plus/Addition always before Minus/Subtraction. The purpose is to make the various methods on these types maximally efficient: 1. Group together variants so that `AssignmentOperator::is_*` methods can be executed with the minimum number of operations (essentially `variant - min <= max`). 2. Align the variants of `AssignmentOperator` and `BinaryOperator` so that conversion methods added in #7350 become very cheap too (essentially `if variant - min <= max { Some(variant + offset) } else { None }`).
82b8c74 to
8e3adab
Compare
Base automatically changed from
11-18-feat_syntax_add_assignmentoperator_to_logical_operator_and_to_binary_operator_methods
to
main
November 19, 2024 01:17
Re-order enum variants of `AssignmentOperator`, `BinaryOperator` and `UnaryOperator`. * `Exponential` moved to after `Remainder` (so with the rest of the arithmetic operators). * `Shift*` operators follow arithmetic operators. * `AssignmentOperator::Bitwise*` ops moved to before `Logical*` ops (so all ops which correspond to `BinaryOperator`s are together). * `*Or` always before `*And`. * Plus/Addition always before Minus/Subtraction. The purpose is to make the various methods on these types maximally efficient: 1. Group together variants so that `AssignmentOperator::is_*` methods can be executed with the minimum number of operations (essentially `variant - min <= max`). 2. Align the variants of `AssignmentOperator` and `BinaryOperator` so that conversion methods added in #7350 become very cheap too (essentially `if variant - min <= max { Some(variant + offset) } else { None }`).
8e3adab to
c335f92
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.

Re-order enum variants of
AssignmentOperator,BinaryOperatorandUnaryOperator.Exponentialmoved to afterRemainder(so with the rest of the arithmetic operators).Shift*operators follow arithmetic operators.AssignmentOperator::Bitwise*ops moved to beforeLogical*ops (so all ops which correspond toBinaryOperators are together).*Oralways before*And.The purpose is to make the various methods on these types maximally efficient:
AssignmentOperator::is_*methods can be executed with the minimum number of operations (essentiallyvariant - min <= max).AssignmentOperatorandBinaryOperatorso that conversion methods added in feat(syntax): addAssignmentOperator::to_logical_operatorandto_binary_operatormethods #7350 become very cheap too (essentiallyif variant - min <= max { Some(variant + offset) } else { None }).