自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

.NET程序中的正則表達式性能問題

開發(fā) 后端
筆者在Web程序中錯誤的使用了RegexOptions.Compiled選項導(dǎo)致性能下降,這里將探討一下.NET程序中的正則表達式性能問題。

之前在web程序中錯誤的使用了RegexOptions.Compiled 選項,導(dǎo)致每個頁面打開整度慢了接近0.5秒..
因為是在httpModule里過濾關(guān)鍵字,對性能比較敏感,做了個簡單測試.  

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

.NET的正則表達使用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. (^|[^^]+|[^^]*)*^ 

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

【編輯推薦】

  1. 介紹幾個C#正則表達式工具
  2. 使用C#正則表達式匹配相關(guān)字符串
  3. C#正則表達式備忘錄
  4. ASP.NET正則表達式的命名組和四向處理功能
  5. .NET正則表達式的歷史
責任編輯:彭凡 來源: 博客園
相關(guān)推薦

2009-08-07 14:24:31

.NET正則表達式

2012-01-12 10:21:57

正則表達式

2021-05-25 09:18:04

正則表達式Linux字符串

2018-09-27 15:25:08

正則表達式前端

2009-08-07 14:31:40

.NET正則表達式基礎(chǔ)

2020-09-04 09:16:04

Python正則表達式虛擬機

2020-11-04 09:23:57

Python

2011-05-11 17:40:30

PHP正則表達式

2024-09-14 09:18:14

Python正則表達式

2009-03-24 08:56:15

正則表達式格式清理字符串

2009-08-24 17:14:41

正則表達式C#和.NET框架

2010-01-05 17:46:04

.NET Framew

2024-01-04 08:25:03

String表達式工具

2009-10-27 10:14:54

VB.NET正則表達式

2010-03-25 18:25:36

Python正則表達式

2010-08-09 14:30:39

Flex正則表達式

2011-04-25 08:44:34

C#正則表達式

2010-07-14 10:06:55

Perl正則表達式

2009-09-16 13:14:10

Ereg正則表達式

2011-08-23 17:46:09

LUA正則表達式模式
點贊
收藏

51CTO技術(shù)棧公眾號