天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

RegexOptions.Compiled的含義和使用

  曾經(jīng)一位同事在寫程序時(shí)發(fā)現(xiàn)在利用正則表達(dá)式匹配文本時(shí)的效率很低。首先可以排除是正則表達(dá)式本身的問(wèn)題,因?yàn)樗褂玫恼齽t表達(dá)式是十分簡(jiǎn)單的,匹配的文本量也不算大。檢查的時(shí)候去掉了RegexOptions.Compiled的選項(xiàng)之后,程序整體速度得到了很大的提升。

  這是因?yàn)檎`解了RegexOptions.Compiled這個(gè)選項(xiàng)提供的功能。在正則引擎啟動(dòng)正則表達(dá)式之前,需要做一些準(zhǔn)備工作,這些準(zhǔn)備工作包括檢查正則表達(dá)式是否符合格式規(guī)范,并將其轉(zhuǎn)化能夠?qū)嶋H應(yīng)用的內(nèi)部形式。在許多關(guān)于正則表達(dá)式的文檔中,將這一過(guò)程用compile來(lái)描述。然而在.NET中,這個(gè)過(guò)程實(shí)際上是以parsing來(lái)描述的。

  在.NET中,parsing是指在程序執(zhí)行過(guò)程中,第一次遇到正則表達(dá)式時(shí)必須檢查它是否格式規(guī)范,并將其轉(zhuǎn)換為適于.NET正則引擎實(shí)際應(yīng)用的內(nèi)部形式。

  當(dāng)指定RegexOptions.Compiled的時(shí)候,所提供的機(jī)制是告訴正則引擎,除了將正則表達(dá)式轉(zhuǎn)換為認(rèn)定的內(nèi)部形式外,還將其編譯(很多人會(huì)混淆這里的編譯和parsing的過(guò)程)為底層的MSIL(Microsoft Intermediate Language)代碼,在正則表達(dá)式實(shí)際應(yīng)用時(shí),可以由JIT(Just-In-Time)優(yōu)化為更快的本地機(jī)器代碼。

  啟動(dòng)這個(gè)選項(xiàng)究竟對(duì)性能產(chǎn)生了怎樣的影響,可以從三個(gè)方面來(lái)看。

  首先在啟動(dòng)速度上,在不使用RegexOptions.Compiled會(huì)比較快,使用了RegexOptions.Compiled情況下,通常會(huì)使啟動(dòng)速度慢許多,據(jù)說(shuō)最多是60倍。

  在內(nèi)存占用方面,使用RegexOptions.Compiled時(shí),通常每個(gè)表達(dá)式會(huì)占用5KB~15KB的內(nèi)存,更重要的是,在程序執(zhí)行過(guò)程中,這塊內(nèi)存是無(wú)法被釋放的。這里有時(shí)會(huì)帶來(lái)一些問(wèn)題,因?yàn)镽egex在.NET中作為對(duì)象被封裝,如果是多個(gè)進(jìn)程或請(qǐng)求同時(shí)調(diào)用到這個(gè)代碼片段,可能會(huì)造成相同的正則表達(dá)式在重復(fù)占用了內(nèi)存,這取決于程序具體的實(shí)現(xiàn)方式。

  在匹配速度方面,RegexOptions.Compiled是可以提升匹配速度的,但是因?yàn)橛性趩?dòng)速度和內(nèi)存占用方面帶來(lái)的額外開(kāi)銷,所以除非是在需要匹配大量的文本和反復(fù)使用某正則表達(dá)式時(shí),這種提升非常不明顯,而且在許多人誤用此選項(xiàng)的情況下,得到的結(jié)果反而是程序整體運(yùn)行速度的下降。所以在非大量文本處理的情況下,如果對(duì)程序整體效率有嚴(yán)格要求,建議不要使用該選項(xiàng)。

  如果需要使用該選項(xiàng),那么一個(gè)應(yīng)該考慮的也是更好的方案應(yīng)該是將要使用的正則對(duì)象封裝到一個(gè)DLL中,這將使最終的程序占用的內(nèi)存更少,因?yàn)椴槐匮b載使用RegexOptions.Compiled編譯正則表達(dá)式的包。另外,由于在封裝DLL時(shí)正則表達(dá)式已經(jīng)編譯好了,裝載的速度也就得到了提升。附帶的一個(gè)好處就是這個(gè)包還可以提供給其他需要的程序員調(diào)用,而不是copy正則表達(dá)式的代碼。

  以上內(nèi)容和分析適用于.NET Framework 2.0。

NET技術(shù)RegexOptions.Compiled的含義和使用,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 欧美日韩中文字幕综合图区 | 国产精品久久久久久久伊一 | 国产精品VIDEOS麻豆TUBE | 国产成人在线视频播放 | 亚洲性夜夜夜色综合网 | 日本xxx在线观看免费播放 | 99精品免费久久久久久久久蜜桃 | 手机国产视频福利 | 九九热在线视频观看这里只有精品 | 三级黄视频| 亚洲人成在线观看一区二区 | 色偷偷影院| 伊伊人成亚洲综合人网 | 特级毛片内射WWW无码 | 近亲乱中文字幕 | 11 13加污女qq看他下面 | 爱穿丝袜的麻麻3d漫画免费 | 久久极品视频 | 无限资源网免费看 | 国产午夜精品一区二区理论影院 | 色欲档案之麻雀台上淫 | 伊人精品影院一本到综合 | 日日噜噜噜噜夜夜爽亚洲精品 | youjizz怎么看| 国语自产一区第二页 | 无颜之月全集免费观看 | 亚洲国产精品一区二区三区在线观看 | 三级黄.色 | 日日噜噜大屁股熟妇 | 天天躁日日躁狠狠躁AV麻豆 | 免费国产久久啪久久爱 | 日本调教网站 | 激情床戏视频片段有叫声 | 中文字幕在线观看亚洲 | 国产黄A片在线观看永久免费麻豆 | 中文字幕高清在线中文字幕 | 色拍拍噜噜噜啦啦新网站 | 国产AV视频一区二区蜜桃 | 欧美另类与牲交ZOZOZO | 久久亚洲这里只有精品18 | 久久精品国产99欧美精品亚洲 |