0
對於簡單的例子很容易理解的規則如何檢查Apache RewriteRule正則表現 - 速度?有沒有任何工具?
RewriteRule ^([a-z]{2,8})$ ?id=$1 [L,QSA]
比
RewriteRule ^(.*)$ ?id=$1 [L,QSA]
快,但有什麼辦法來檢查和比較其(Apache的重寫規則的正則表達式)正確的表現?
對於簡單的例子很容易理解的規則如何檢查Apache RewriteRule正則表現 - 速度?有沒有任何工具?
RewriteRule ^([a-z]{2,8})$ ?id=$1 [L,QSA]
比
RewriteRule ^(.*)$ ?id=$1 [L,QSA]
快,但有什麼辦法來檢查和比較其(Apache的重寫規則的正則表達式)正確的表現?
Apache的正則表達式似乎是derived from PCRE所以你可以使用pcretest
進行基準測試,並得到他們如何執行的線索。
下面是使用一百萬個測試匹配和三個不同測試輸入計算兩個表達式的結果。輸出是每場比賽的平均執行時間。
$ pcretest -tm 1000000 -q
re> /^([a-z]{2,8})$/
data> a
Execute time 0.0002 milliseconds
No match
data> aaaaaaaa
Execute time 0.0003 milliseconds
0: aaaaaaaa
1: aaaaaaaa
data> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Execute time 0.0006 milliseconds
No match
data>
$ pcretest -tm 1000000 -q
re> /^(.*)$/
data> a
Execute time 0.0003 milliseconds
0: a
1: a
data> aaaaaaaa
Execute time 0.0003 milliseconds
0: aaaaaaaa
1: aaaaaaaa
data> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Execute time 0.0005 milliseconds
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
data>
他們似乎有類似的執行時間,大約2-3億每秒場比賽我的測試機上。但真正的問題是,爲什麼你懷疑重寫規則的匹配時間是一個問題?