2016-06-30 48 views
-1

我想寫一個腳本來檢測後綴,單詞和書面語言的部分。它會包含很多字符串匹配,所以我想根據正則表達式來編寫它。Php和正則表達式性能

但我有一個關於性能的問題。例如,假設我們有100多個不同的正則表達式,並且我們希望將所有這些正則表達式同時用於輸入文本。這會如何影響性能?

我知道有兩個選擇,製作一個正則表達式數組,並分別用循環運行它們。另一個是將所有表達式與「|」相結合並獲得一個巨大的正則表達式字符串哪一個會更好的表現?

如果這些都不合邏輯,你能否建議我另一種方法來達到這個目的?

+2

一個巨大的正則表達式通常要快得多。爲什麼,請閱讀[這篇來自FastRoute作者的同一主題的優秀博文](http://nikic.github.io/2014/02/18/Fast-request-routing-using-regular-expressions.html) - 他在哪裏測試並討論正則表達式的實質。 –

回答

0

我不能告訴你這是更快,但你可以運行在這個小測試套件的兩個版本(和告訴我們的結果:d)

$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 />";