包分类查找算法之聚合压缩位集优化
一种基于位集的包分类\报文查找\ACL表查询\网络数据包路由转发算法
昨天才开始实现今年4月26号提出的这个RLE编码优化的前半段(聚合位集),今天测了下性能提升了50%
11属性-32聚合比-正向位集搜索(k11-AFBS,Aggregation Forward Bitset Search)
类似多级缓存体系
一大堆实验,一大堆坑,谁爱跑谁填去,我不管了
第二套数据集上,乱序后平均386纳秒(之前790纳秒),不乱序平均334纳秒(之前600纳秒),去掉第3个数据集后剩下16个数据集不乱序平均187纳秒
k11-AFBS 与运算次数从 1944 减少到 168,比较次数从 3892 减少到 210,聚合成功32次,聚合失败2.7次,聚合成功率92.3%,检查次数没变化,平均 3.97 次检查。(RLE编码很难更少了吧... 可以直接对一级位集缓存编码,也可以只对二级位集缓存编码,)
最快的是第三套数据集(强局部性)中的第9个数据集,69纳秒
聚合压缩比从1上升到32,内存从157MB下降到81MB,查找时间从1148纳秒减少到419纳秒,再引入高效位运算__builtin_ctzl后减少到386纳秒,聚合比再翻倍到64后没效果了,再翻倍到128的话要改代码了。
昨天才开始实现今年4月26号提出的这个RLE编码优化的前半段(聚合位集),今天测了下性能提升了50%
11属性-32聚合比-正向位集搜索(k11-AFBS,Aggregation Forward Bitset Search)
类似多级缓存体系
一大堆实验,一大堆坑,谁爱跑谁填去,我不管了
第二套数据集上,乱序后平均386纳秒(之前790纳秒),不乱序平均334纳秒(之前600纳秒),去掉第3个数据集后剩下16个数据集不乱序平均187纳秒
k11-AFBS 与运算次数从 1944 减少到 168,比较次数从 3892 减少到 210,聚合成功32次,聚合失败2.7次,聚合成功率92.3%,检查次数没变化,平均 3.97 次检查。(RLE编码很难更少了吧... 可以直接对一级位集缓存编码,也可以只对二级位集缓存编码,)
最快的是第三套数据集(强局部性)中的第9个数据集,69纳秒
聚合压缩比从1上升到32,内存从157MB下降到81MB,查找时间从1148纳秒减少到419纳秒,再引入高效位运算__builtin_ctzl后减少到386纳秒,聚合比再翻倍到64后没效果了,再翻倍到128的话要改代码了。
全部评论
相关推荐
点赞 评论 收藏
分享

点赞 评论 收藏
分享