程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 淺談提升C#正則表達式效率

淺談提升C#正則表達式效率

編輯: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>"));
}

 

執行發現,內存使用情況為39,760K。輸出的執行時間為3.7954446秒(刷了幾次,取最快的那次)

b.測試在使用了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
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved