2016-06-30 16 views
-1

Ich möchte ein Skript schreiben, um Suffixe, Wörter und Abschnitte der geschriebenen Sprache zu erkennen. Es wird viel String-Matching enthalten, also möchte ich es basierend auf regulären Ausdrücken schreiben.PHP-und Regulärer Ausdruck Leistung

Aber ich habe eine Frage zur Leistung. Nehmen wir zum Beispiel an, dass wir mehr als 100 verschiedene reguläre Ausdrücke haben und dass wir alle gleichzeitig für einen Eingabetext abgleichen wollen. Wie würde das die Leistung beeinflussen?

Wir haben zwei Möglichkeiten, wie ich weiß, machen ein Array von regulären Ausdrücken und führen sie jeweils mit einer Schleife. Ein anderer kombiniert alle Ausdrücke mit "|" und eine große reguläre Ausdruckszeichenfolge erhalten. Welcher wäre mit Leistung besser?

Wenn keine davon logisch sind, können Sie mir bitte eine andere Methode vorschlagen, um das zu erreichen?

+2

Eine große regex ist in der Regel viel viel schneller. Warum, lesen [diesen ausgezeichneten Beitrag zum selben Thema, vom Autor von FastRoute] (http://nikic.github.io/2014/02/18/Fast-request-routing-using-regular-expressions.html) - wo er Benchmarks und redet über das Wesentliche der Regex. –

Antwort

0

Ich kann Ihnen nicht sagen, welche schneller ist, aber Sie können beide Versionen in diesem Mini-Testsuite (und sagen Sie uns die Ergebnisse: D) laufen

$startA = microtime(true); 
for($i = 0; $i < 10000; $i++) 
{ 
    //First version 
} 
$endA = microtime(true); 

unset ($all, $your, $variables); 

$startB = microtime(true); 
for($i = 0; $i < 10000; $i++) 
{ 
    //Second version 
} 
$endB = microtime(true); 

echo $endA-$startA."<br />"; 
echo $endB-$startB."<br />";