日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
.NET程序中的正則表達(dá)式性能問題

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

 
 
 
  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引擎正則式的寫法對(duì)性能的很大. 

 
 
 
  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. (^|[^^]+|[^^]*)*^ 

看來正則的寫法對(duì)性能影響挺大的


網(wǎng)站欄目:.NET程序中的正則表達(dá)式性能問題
本文路徑:http://www.5511xx.com/article/dpdgjcg.html