浅谈提升C#正则表达式效率

  说到C#的Regex,谈到最多的应该就是RegexOptions.Compiled这个东西,传说中在匹配速度方面,RegexOptions.Compiled是可以提升匹配速度的,但在启动速度上,使用了RegexOptions.Compiled情况下,通常会使启动速度慢许多,据说最多是60倍。

  进行一组测试,有测试数据,才有讨论依据。

  第一步,帖上测试硬件信息(呵呵,硬件有点烂:()

  第二步,

  a.测试在没有使用RegexOptions.Compiled项时候的情况,随意使用一些内容,然后循环一万次实例化正则表达式对象来匹配这些内容。

代码
protected void Page_Load(object sender, EventArgs e)
{
WebClient webClient
= new WebClient();
string content = webClient.DownloadString("http://www.cnblogs.com/tmyh/archive/2010/09/29/sqlindex_01.html");

Stopwatch watcher
= new Stopwatch();
watcher.Start();

int i = 10000;
while (i > 0)
{
Regex rgx
= new Regex("<div>.+?</div>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
bool b1 = rgx.IsMatch(content);

Regex rgx2
= new Regex("<p>.+?</p>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
bool b2 = rgx2.IsMatch(content);

i
--;
}
Response.Write(
string.Concat("<div>", watcher.Elapsed.TotalSeconds.ToString("f7"), "</div>"));
}

NET技术浅谈提升C#正则表达式效率,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。