在Boost的dynamic_bitset中实现count()

时间:2016-03-02 16:22:54

标签: c++ boost boost-dynamic-bitset

我正在分析使用dynamic_bitset<>的一些代码,并且我发现我的瓶颈发生在count()函数中,需要在for循环中调用数百万次。简而言之,for循环使用成对的位集,使用&计算集合交集,然后使用count()保存汉明权重。

为了与STL中的常规<bitset>进行比较,我将bitset实现为长数组,并使用__builtin_popcountl()(在<bitset>中使用),并找到它慢得多 - 大约慢了50%。有没有人看过do_count()中{@ 1}}功能,因为它使用了一些我根本不了解的查找表。

为了更清楚,我的问题是为什么Boost <boost/detail/dynamic_bitset.hpp>do_count()效率更高?

0 个答案:

没有答案