随着标题的推移,我们愿就与以下制约因素相匹配的模式的最快算法提出一些建议:
Long dictionary: 256
Short but not fixed length rules (from 1 to 3 or 4 bytes depth at most)
小型(150) 规则数目(如果是三条)或中度(~1K)
Snort或AC-DFA-Split使用过的AC-DFA-Split,比Snort使用的现有AC-DFA性能好
Software based (recent COTS systems like E3 of E5) Ideally would like to employ some SIMD / SSE stuff due to the fact that currently they are 128 bit wide and in near future they will be 256 in opposition to CPU s 64
We started this project by prefiltering Snort AC with algorithm shown on Sigmatch paper but sadly the results have not been that impressive (~12% improvement when compiling with GCC but none with ICC)
之后,我们试图通过IPP图书馆利用SSE 4.2中的新模式配对能力,但根本无法取得任何业绩(在机器编码中直接这样做的猜测会更好,但肯定会更加复杂)
因此回到原来的思路。 现在,我们正按照理事会理事会议路线开展工作,但是我们知道,除非我们取代拟议的中方协进会,否则将很难改善业绩,但至少能够支持更多的规则,而没有显著的业绩下降。
我们知道,使用比照平行主义思想,对长期模式使用大量记忆,但问题范围被长期减少到3或4个,从而使其成为一种可行的替代办法。
我们特别发现Nedtries,但想知道你的想法是什么,或者是否有更好的替代办法。
理想的情况是,源代码将设在C,并持有开放源许可证。
IMHO,我们的想法是,在应对不同规模时,寻找一个逐个移动的物品,但通过利用最平行的方法,利用SIMD / SSE,并尽可能减少分支。
我不知道这样做是明智的还是明智的。
回到适当的关键板上:D
实质上,大多数算法没有正确利用目前的硬件能力或限制。 他们非常缺乏能力,非常有分支,不说他们打算利用现存的COTS CPU的能力,使你能够有一定程度的瘫痪(SIMD, SSE, ......)
This is preciselly what we are seeking for, an algorithm (or an implementation of an already existing algorithm) that properly considers all that, with the advantag of not trying to cover all rule lengths, just short ones
例如,我看到了一些关于《国家财政协议》的文件,其中警告说,由于适当的切身效率、增强瘫痪状态等原因,这些年来,他们的业绩可能与《国家财政协议》相配,记忆要求要少得多。