-
-
Notifications
You must be signed in to change notification settings - Fork 476
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
perf(syntax): reorder operator enum variants #7351
perf(syntax): reorder operator enum variants #7351
Conversation
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. |
CodSpeed Performance ReportMerging #7351 will not alter performanceComparing Summary
|
890bdfa
to
53997c2
Compare
03d2dad
to
2ce3a79
Compare
2ce3a79
to
82b8c74
Compare
Merge activity
|
53997c2
to
2534cde
Compare
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
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
Re-order enum variants of
AssignmentOperator
,BinaryOperator
andUnaryOperator
.Exponential
moved 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 toBinaryOperator
s are together).*Or
always 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
).AssignmentOperator
andBinaryOperator
so that conversion methods added in feat(syntax): addAssignmentOperator::to_logical_operator
andto_binary_operator
methods #7350 become very cheap too (essentiallyif variant - min <= max { Some(variant + offset) } else { None }
).