Hyperscan 5.0.0 新特性

Hyperscan 5.0.0 版本已于2018年7月9日在Github (?https://github.com/intel/hyperscan?) 上發(fā)布汰扭。

這一新版本主要涉及3個(gè)改進(jìn):

加入Hyperscan/libpcre混合庫天揖,支持所有PCRE語法特性遭庶;

加入“邏輯組合”新特性只泼,滿足對(duì)多規(guī)則進(jìn)行自定義的邏輯組合匹配的需求业岁;

加入Hyperscan工具對(duì)Windows操作系統(tǒng)的支持(包括win32/64平臺(tái))充蓝;

混合庫Chimera

o 特性概要:

該庫有效整合Hyperscan與libpcre娩贷,旨在支持PCRE完整語法的同時(shí),亦能獲益于Hyperscan的高性能優(yōu)勢(shì)碱茁。對(duì)于任何覆蓋PCRE所有語法的目標(biāo)規(guī)則集裸卫,Chimera對(duì)其同時(shí)進(jìn)行Hyperscan與PCRE編譯,得到混合database纽竣,運(yùn)行時(shí)根據(jù)Hyperscan本身對(duì)具體規(guī)則語法的支持程度墓贿,來決定是否用Hyperscan直接進(jìn)行匹配驗(yàn)證茧泪,亦或先扮演過濾角色,由PCRE進(jìn)行最終匹配驗(yàn)證聋袋。

o 應(yīng)用要點(diǎn):

Chimera庫提供與原生Hyperscan庫類似的編譯時(shí)期和運(yùn)行時(shí)期API队伟。Chimera被設(shè)計(jì)為和PCRE有相同的匹配行為,包括了貪婪和非貪婪舱馅,以及捕獲機(jī)制等等缰泡。同時(shí),Chimera和PCRE一樣會(huì)同時(shí)返回匹配的起始位置和結(jié)束位置代嗤。與Hyperscan返回所有的匹配位置不同棘钞,Chimera只返回?zé)o重疊區(qū)域的匹配區(qū)間。例如干毅,規(guī)則 /foofoo/ 在語料 “foofoofoofoo” 中返回的匹配區(qū)間僅為(0, 6) 和 (6, 12)宜猜。值得注意的是,Chimera對(duì)正則語法的支持雖然更加完善硝逢,但其匹配性能相較純Hyperscan而言仍會(huì)有所下降姨拥,我們建議只在需要對(duì)PCRE語法進(jìn)行完全支持的情況下使用Chimera,而對(duì)于Hyperscan本身足夠應(yīng)付的場(chǎng)合仍沿用Hyperscan庫以獲得高性能表現(xiàn)渠鸽。

規(guī)則“邏輯組合”

o 特性概要:

該特性提供了新的規(guī)則使用場(chǎng)景:對(duì)于一組規(guī)則來說叫乌,用戶可能關(guān)心部分規(guī)則的匹配,也可能需要部分規(guī)則不被匹配徽缚,單個(gè)規(guī)則有自己的邏輯語義憨奸,而整組規(guī)則的邏輯組合后的整體匹配行為,才是用戶所需要的結(jié)果凿试。我們?yōu)橐?guī)則的邏輯語義定義了3種邏輯操作符排宰,即常見的 “NOT”,“AND”那婉,“OR”板甘。規(guī)則的邏輯組合用中綴表示法來書寫,它包含操作符详炬,操作子盐类,和小括號(hào)。操作子是規(guī)則ID呛谜,定義在別處在跳,操作符為!(NOT),&(AND)呻率,|(OR)。例如 ((301 OR 302) AND 303) AND (304 OR NOT 305) 可表示為((301 | 302) & 303) & (304 | !305)呻引。操作符優(yōu)先級(jí)為! > & > |礼仗。

o 應(yīng)用要點(diǎn):

邏輯組合表達(dá)式的匹配仍然沿用Hyperscan的編譯和運(yùn)行時(shí)API,只是需要對(duì)其設(shè)置新的標(biāo)志位HS_FLAG_COMBINATION來確指。同時(shí)元践,邏輯組合表達(dá)式和其內(nèi)部操作子對(duì)應(yīng)的規(guī)則必須同時(shí)進(jìn)行編譯韭脊。在執(zhí)行邏輯組合的匹配過程時(shí),每個(gè)內(nèi)部操作子對(duì)應(yīng)規(guī)則的匹配位置仍然會(huì)被正常報(bào)告单旁,在這些位置中沪羔,一旦邏輯組合的布爾值為TRUE,組合本身也會(huì)在當(dāng)前位置報(bào)告成功匹配象浑。對(duì)于只關(guān)心邏輯組合結(jié)果的情況蔫饰,標(biāo)志位HS_FLAG_QUITE可用來取消邏輯組合內(nèi)部子規(guī)則的匹配報(bào)告。

Windows支持:

Hyperscan庫愉豺,包括基本測(cè)試工具h(yuǎn)sbench篓吁,hscheck,hscollider以及hsdump目前可以在Windows8或Windows更新版本上編譯和運(yùn)行蚪拦,編譯工具為Intel C++ Compiler或者Visual Studio 2017杖剪。需要注意的是,為了在Windows上正常支持Ragel驰贷,用戶可能需要借助Cygwin來進(jìn)行源碼構(gòu)建盛嘿。

優(yōu)化了編譯階段無向圖的實(shí)現(xiàn),使得圖拷貝的開銷減少括袒,提升了規(guī)則的編譯效率次兆。

Bugfix:

o Issue #86: 為安裝的PCRE包提供hscollider支持。


github:https://github.com/intel/hyperscan/releases/tag/v5.0.0

安裝指南:https://intel.github.io/hyperscan/dev-reference/getting_started.html?


轉(zhuǎn)自:https://mp.weixin.qq.com/s/QOctINBbeskccQn7NMOUlA


箱熬!符號(hào)代表當(dāng)前位置沒發(fā)生匹配

關(guān)于邏輯表達(dá)式的距離:?"101 & 102 & !105"

對(duì)于有非邏輯符的表達(dá)式类垦, 如果101和102都匹配了, 在當(dāng)前位置105沒匹配中城须, 則

"101 & 102 & !105" 表達(dá)式會(huì)計(jì)算為true蚤认, on_match會(huì)返回邏輯表達(dá)式的id。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末糕伐,一起剝皮案震驚了整個(gè)濱河市砰琢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌良瞧,老刑警劉巖陪汽,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異褥蚯,居然都是意外死亡挚冤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門赞庶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來训挡,“玉大人澳骤,你說我怎么就攤上這事±奖。” “怎么了为肮?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肤京。 經(jīng)常有香客問我颊艳,道長,這世上最難降的妖魔是什么忘分? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任棋枕,我火速辦了婚禮,結(jié)果婚禮上饭庞,老公的妹妹穿的比我還像新娘戒悠。我一直安慰自己,他們只是感情好舟山,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布绸狐。 她就那樣靜靜地躺著,像睡著了一般累盗。 火紅的嫁衣襯著肌膚如雪寒矿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天若债,我揣著相機(jī)與錄音符相,去河邊找鬼。 笑死蠢琳,一個(gè)胖子當(dāng)著我的面吹牛啊终,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播傲须,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蓝牲,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了泰讽?” 一聲冷哼從身側(cè)響起例衍,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體这嚣,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年劲妙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖奥吩,靈堂內(nèi)的尸體忽然破棺而出具伍,到底是詐尸還是另有隱情,我是刑警寧澤圈驼,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站望几,受9級(jí)特大地震影響绩脆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜橄抹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一靴迫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧楼誓,春花似錦玉锌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至榄融,卻和暖如春参淫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背愧杯。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國打工涎才, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人力九。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓耍铜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親跌前。 傳聞我的和親對(duì)象是個(gè)殘疾皇子棕兼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354