Alle filters worden intern in reguliere expressies vertaald, zelfs degenen die niet zo zijn opgegeven. Bijvoorbeeld het filter ad*banner.gif|
wordt vertaald in de reguliere expressie /ad.*banner\.gif$/
. Als Adblock Plus echter een adres krijgt dat met alle filters vergeleken moet worden, dan test het niet simpelweg alle filters een voor een — dat zou het browsen onnodig vertragen.
Naast het vertalen van filters in reguliere expressies probeert Adblock Plus er ook informatie uit te halen. Het heeft een unieke string van acht karakters nodig (een "snelkoppeling") die in elk adres wat met het filter overeenkomt aanwezig moet zijn (de lengte is arbitrair, acht leek hier gewoon redelijk te zijn). Als u bijvoorbeeld een filter |http://ad.*
heeft, dan heeft Adblock Plus de keuze tussen "http://a", "ttp://ad" en "tp://ad.", al deze strings zullen altijd aanwezig zijn, wat er maar overeen mag komen met dit filter. Helaas is het vinden van een snelkoppeling voor filters die minder dan acht karakters ononderbroken door wildcards hebben of voor filters die als reguliere expressies zijn opgegeven onmogelijk.
Alle snelkoppelingen worden in een opzoektabel geplaatst, Adblock Plus kan het filter erg efficiënt vinden aan de hand van zjin snelkoppeling. Dan, als een specifiek adres getest moet worden, zal Adblock Plus eerst bij bekende snelkoppelingen kijken (dit gebeurt erg snel, de tijd die hiervoor nodig is is haast onafhankelijk van het aantal snelkoppelingen). Alleen als er een snelkoppeling wordt gevonden wordt de string vergeleken met de reguliere expressie van het overeenkomende filter. Alleen filters zonder snelkoppeling moeten een voor een getest worden, wat langzaam is.
Samengevat: welke filters moet u gebruiken om een filterlijst snel te maken? U moet zo min mogelijk reguliere expressies als mogelijk gebruiken, deze zijn altijd langzaam. U moet er ook voor zorgen dat de eenvoudige filters op zijn minst acht karakters onafgebroken tekst hebben (dit betekent dat ze geen karakters met een bijzondere betekenins moeten bevatten, zoals *), anders zullen ze net zo langzaam zijn als reguliere expressies. Maar met filters die aan de eisen voldoen maakt het niet uit hoeveel filters je hebt, de verwerkignstijd is altijd gelijk. Dat betekent dat als je 20 eenvoudige filters nodig hebt om een reguliere expressie te vervangen het nog steeds de moeite waard is. Nu we het er toch over hebben — de deregifier is van harte aan te bevelen.
Het filtermatchingalgoritme in detail