单凡一开始b[0][bi]就是0,就不需要做&运算了,
上面的注释的版本先检查,非0才运算,到0或执行10次运算即止
下面的版本一上来就运算,再判断是不是0,如果本来就是0,就不需要做多余的&运算,所以理论上注释的版本更优。
然而现实是,统计出来的运算次数没变化,好吧,就算不可能一开始就初始化为0,但运算次数没变,速度怎么慢了这么多?从1.835us到1.269us
还有一个做 | 或运算的版本,图4,也是变慢了。
其实有大量的情况是0,可以一次与运算都不要做的:图5。
代码在
https://github.com/shiwanghua/PacketClassification/blob/2d13bd91e0d701f432b3c0e8e9d1cf424259209a/20221003-GraduationDesign/HEMBitsetsSearch/HEMBS.cpp#L320
(34257)#C++#
上面的注释的版本先检查,非0才运算,到0或执行10次运算即止
下面的版本一上来就运算,再判断是不是0,如果本来就是0,就不需要做多余的&运算,所以理论上注释的版本更优。
然而现实是,统计出来的运算次数没变化,好吧,就算不可能一开始就初始化为0,但运算次数没变,速度怎么慢了这么多?从1.835us到1.269us
还有一个做 | 或运算的版本,图4,也是变慢了。
其实有大量的情况是0,可以一次与运算都不要做的:图5。
代码在
https://github.com/shiwanghua/PacketClassification/blob/2d13bd91e0d701f432b3c0e8e9d1cf424259209a/20221003-GraduationDesign/HEMBitsetsSearch/HEMBS.cpp#L320
(34257)#C++#
全部评论
破案了
相关推荐
05-29 09:02
门头沟学院 Java 点赞 评论 收藏
分享