這篇文章將為大家詳細(xì)講解有關(guān)如何分析.NET程序中的正則表達(dá)式性能問題,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
在鄂城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),網(wǎng)絡(luò)營銷推廣,外貿(mào)網(wǎng)站制作,鄂城網(wǎng)站建設(shè)費(fèi)用合理。
之前在web程序中錯(cuò)誤的使用了RegexOptions.Compiled 選項(xiàng),導(dǎo)致每個(gè)頁面打開整度慢了接近0.5秒..
因?yàn)槭窃趆ttpModule里過濾關(guān)鍵字,對(duì)性能比較敏感,做了個(gè)簡單測試.
Stopwatch w = new Stopwatch(); w.Start(); Regex r = new Regex(@".*", RegexOptions.Compiled ); Match m = r.Match("aaa"); if (m.Success) { w.Stop(); Response.Write(w.Elapsed.TotalSeconds.ToString("0.0000000")); }
不加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ì)性能的很大.
Regex r = new Regex(@"(a|[^a]+)*^" ); string str="111111111111111111111111111111111"; Match m = r.Match(str); if (m.Success) { Response.Write(w.Elapsed.TotalSeconds.ToString("0.0000000")); }
只要str長度超過26基本上很匹配難完成.
以下這些都類似
(b|[^b]+)*^ (c|[^c]+)*^ (^|[^^]+)*(^|[^^]+)*^ (^|[^^]+|[^^]*)*^
看來正則的寫法對(duì)性能影響挺大的
關(guān)于如何分析.NET程序中的正則表達(dá)式性能問題就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
新聞標(biāo)題:如何分析.NET程序中的正則表達(dá)式性能問題
文章出自:http://www.rwnh.cn/article4/ghcdie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、自適應(yīng)網(wǎng)站、網(wǎng)站導(dǎo)航、標(biāo)簽優(yōu)化、網(wǎng)站內(nèi)鏈、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)