鑑於串ab
關於正則表達式performancing
給出這個表達式模式
(a)(b)
如果我們需要去除滿弦,但打印第二組,我們可以寫2株:
1)preg_replace("#(a)(b)#", "$2", "ab") // save both group
也是如此:
2)preg_replace("#(?:a)(b)#", "$1", "ab") // dont save first group
什麼變體更適合性能?
鑑於串ab
關於正則表達式performancing
給出這個表達式模式
(a)(b)
如果我們需要去除滿弦,但打印第二組,我們可以寫2株:
1)preg_replace("#(a)(b)#", "$2", "ab") // save both group
也是如此:
2)preg_replace("#(?:a)(b)#", "$1", "ab") // dont save first group
什麼變體更適合性能?
我跑每個操作在一個緊密循環5,000,000每個和比較時間。其實,我比較了四種操作:
preg_replace("#(a)(b)#", "$2", "ab");
preg_replace("#(?:a)(b)#", "$2", "ab");
preg_replace("#a(b)#", "$2", "ab");
preg_replace("#a(?=b)#", "", "ab");
我沒有看到時代一個非常一致的區別,所以我認爲它實際上沒有多大的性能,也就是我會選擇從哪個是最有意義一個設計/語義視角。
#1和#2的表現大致相同。 #2看起來稍微快一些,但偶爾會更慢(可能是由於服務器噪音)。 #3的速度一直比它快大約5%,而選項#4比#3快了大約2%(即它似乎是最好的,可能是因爲它不需要捕獲或插入任何東西)。
儘管如此,我還是會選擇最有意義的。
我意識到str_replace("ab", "b", "ab");
可能不是類似的,但如果可以的話,使用它。它的速度比任何其他速度快兩倍。
什麼變體更適合性能?
要麼。
如果你只需要做很少的替換,那根本就沒有關係。 如果您必須進行數百萬次替換,則必須考慮源數據的另一種格式,這將需要較少的解析。
但無論如何,現在的電腦都很快。我的意思是FAST。
足夠快以運行基於JSON或基於XML的應用程序,而JSON或XML解析需要比簡單的正則表達式WAY更多的資源。他們運行良好。所以,我懷疑你會面臨這樣一個條件,這樣的正則表達式會影響任何東西
嗨,我已經刪除了第二個問題。你仍然可以在另一個帖子中提問。你應該只問每個帖子1個問題。 – sashoalm
@sashoalm好的,謝謝,理解。 – RIKI
也是這是一個PHP的問題?我會重播它。 – sashoalm