如何检查Apache RewriteRule正则表达式的性能 - 速度?那有什么工具吗?

时间:2011-11-24 12:41:23

标签: regex performance apache mod-rewrite

简单来说,规则

很容易理解
RewriteRule ^([a-z]{2,8})$ ?id=$1 [L,QSA]

RewriteRule ^(.*)$ ?id=$1 [L,QSA]

但有没有办法检查和比较它(Apache RewriteRule正则表达式)的正确性能?

1 个答案:

答案 0 :(得分:3)

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百万次匹配。但真正的问题是,为什么你怀疑重写规则的匹配时间是个问题?