av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

.NET程序中的正則表達(dá)式性能問題

之前在web程序中錯(cuò)誤的使用了RegexOptions.Compiled 選項(xiàng),導(dǎo)致每個(gè)頁面打開整度慢了接近0.5秒..
因?yàn)槭窃趆ttpModule里過濾關(guān)鍵字,對性能比較敏感,做了個(gè)簡單測試.  

 
 
 
  1. Stopwatch w = new Stopwatch();  
  2.           w.Start();  
  3.           Regex r = new Regex(@".*", RegexOptions.Compiled );  
  4.             Match m = r.Match("aaa");  
  5.             if (m.Success)  
  6.             {  
  7.                 w.Stop();  
  8.                 Response.Write(w.Elapsed.TotalSeconds.ToString("0.0000000"));            
  9.             } 

不加RegexOptions.Compiled ,計(jì)時(shí)器顯示0.0000x,添加RegexOptions.Compiled 后計(jì)數(shù)器顯示0.00x
如果正則式寫的在復(fù)雜一些,那么僅編譯時(shí)間都要0.x秒了. 看來大部分應(yīng)用使用RegexOptions.Compiled 反而會(huì)降低性能,除非是很BT的應(yīng)用

.NET的正則表達(dá)使用NFA引擎,NFA引擎正則式的寫法對性能的很大. 

 
 
 
  1.  Regex r = new Regex(@"(a|[^a]+)*^" );  
  2.  string  str="111111111111111111111111111111111";  
  3. Match m = r.Match(str);  
  4.              if (m.Success)  
  5.              {  
  6.                  Response.Write(w.Elapsed.TotalSeconds.ToString("0.0000000"));  
  7.                 
  8.              } 

只要str長度超過26基本上很匹配難完成.
以下這些都類似

 
 
 
  1. (b|[^b]+)*^  
  2. (c|[^c]+)*^  
  3.  (^|[^^]+)*(^|[^^]+)*^    
  4. (^|[^^]+|[^^]*)*^ 

看來正則的寫法對性能影響挺大的


本文標(biāo)題:.NET程序中的正則表達(dá)式性能問題
URL標(biāo)題:http://uogjgqi.cn/article/dpdgjcg.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們在微信上24小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流