Alle Filter werden intern in reguläre Ausdrücke umgewandelt, auch solche, die nicht als reguläre Ausdrücke eingegeben wurden. So wird zum Beispiel der Filter ad*banner.gif|
in den regulären Ausdruck /ad.*banner\.gif$/
umgewandelt. Allerdings, wenn Adblock Plus eine Adresse zum Überprüfen bekommt, wird diese nicht einfach nacheinander mit allen Filtern verglichen — das würde den Browser unnötig verlangsamen.
Außer der Umwandlung der Filter in reguläre Ausdrücke versucht Adblock Plus auch, einfachen Text aus diesen zu extrahieren. Was es braucht ist eine eindeutige Zeichenfolge mit acht Zeichen (ein "Kürzel"), das in jeder Adresse vorhanden sein muss, auf die der Filter zutrifft (die Länge der Zeichenfolge hat keine besondere Bedeutung, acht Zeichen schienen einfach vernünftig zu sein). Zum Beispiel, wenn man den Filter |http://ad.*
hat, hat Adblock Plus die Wahl zwischen "http://a", "ttp://ad" und "tp://ad." als Kürzel, jede dieser Zeichenfolgen wird auf jeden Fall in einer Adresse vorhanden sind, auf die der Filter zutrifft. Leider ist es aber nicht immer möglich, einen solchen Kürzel zu finden, z.B. wenn der Filter einfach keine acht Zeichen hat, die nicht von Jokerzeichen unterbrochen werden, oder wenn der Filter als regulärer Ausdruck eingegeben wurde.
Alle Kürzel werden in einer Nachschlagetabelle abgelegt, Adblock Plus kann dann Filter sehr effizient nach ihrem Kürzel finden. Wenn eine Adresse überprüft werden muss, sucht Adblock Plus in dieser zunächst nach bekannten Kürzeln (das kann sehr schnell gemacht werden, die benötigte Zeit hängt kaum von der Anzahl der Kürzel ab). Nur wenn das Kürzel gefunden wird, wird die Adresse mit dem dazugehörigen Filter verglichen. Allerdings müssen Filter ohne Kürzel weiterhin jedesmal überprüft werden, so dass diese die Ausführung verlangsamen.
Zusammenfassung: welche Filter sollten in einer schnellen Filterliste verwendet werden? Man sollte so wenige reguläre Ausdrücke wie nur möglich verwenden, diese sind immer langsam. Man sollte auch sicherstellen, dass die einfachen Filter mindestens acht Zeichen haben, die nicht von Sonderzeichen wie * unterbrochen werden, andernfalls werden diese genauso langsam wie reguläre Ausdrücke sein. Fallen die Filter nicht in diese beiden Kategorien, macht es kaum noch Unterschied, wie viele es sind, die Zeit für die Verarbeitung ist immer dieselbe. Das heißt, dass man einen regulären Ausdruck mit 20 einfachen Filtern ersetzen kann und es wird sich immer noch lohnen. Und da wir schon dabei sind — der Übersetzer für reguläre Ausdrücke ist sehr empfehlenswert.
Der Algorithmus für Anwendung der Filter im Detail [en]