Page MenuHomePhabricator

Support short-circuit bool ops
Closed, ResolvedPublic

Description

It will speed up lots of filters.


Version: unspecified
Severity: normal

Event Timeline

bzimport raised the priority of this task from to Low.Nov 22 2014, 1:06 AM
bzimport added a project: AbuseFilter.
bzimport set Reference to bz41693.
bzimport added a subscriber: Unknown Object (MLST).

Adding vvv to CC who is the author of AF parser.

But they *do* short-circuit now, though not in a proper way.

(In reply to comment #2)

But they *do* short-circuit now, though not in a proper way.

I just see some filters only saying cond1 & cond2 where cond1 is very cheap and is false for most of edits (for example, user_name == 'FooBar') but cond2 is some more expensive consume more condition limit than expected (in short-circuited evaluation).

  • Bug 51784 has been marked as a duplicate of this bug. ***

From T53784:

Currently, if I create a filter having the code

false & false & false & false & false

and then make an edit in any page, the filter's page will have a message saying "... it consumes 5 conditions of the condition limit."

There is no reason for it to consume the last 4 conditions, because the first one is already false.

Notice the behavior is a little better if the code is changed to

false & ( false & false & false & false )

because it will now consume just 2 conditions. Ideally, it should consume only 1 condition in both cases (see Short-circuit evaluation).

Change 282475 had a related patch set uploaded (by Bartosz Dziewoński):
Improve ignoring short-circuited operations

https://gerrit.wikimedia.org/r/282475

matmarex raised the priority of this task from Low to High.Apr 9 2016, 2:26 PM

Change 282475 merged by jenkins-bot:
Improve ignoring short-circuited operations

https://gerrit.wikimedia.org/r/282475