Speed up DeclarativePolicy::Runner#steps_by_score
There were a couple of things here:
1. If the state was already enabled, we don't need to check all the remaining
steps - only those that can prevent the state. (An enable followed by an
enable is a no-op.) This logic is in `#run`, but we still did the work of
scoring and sorting the steps.
2. The sorting is known to be inefficient, but we can make it slightly more
efficient by stopping once we have a step with zero score, as that means it's
free.
Neither of these make this _fast_, especially when called lots of times - as we
do when there is lots of activity on an issue - but they do help some.
Showing
Please
register
or
sign in
to comment