• Sean McGivern's avatar
    Speed up DeclarativePolicy::Runner#steps_by_score · d7717192
    Sean McGivern authored
    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.
    d7717192
declarative-policy-optimisations.yml 73 Bytes