0

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

为了与<bitset>STL 中的常规进行比较,我将 bitset 实现为 long 数组并使用__builtin_popcountl()(used in <bitset>),发现它要慢得多 - 大约慢 50%。有没有人看过 boost 的do_count()函数,在 中找到<boost/detail/dynamic_bitset.hpp>,因为它使用了一些我完全不理解的查找表。

更清楚地说,我的问题是为什么 Boost 的do_count()效率比__builtin_popcount()?

4

0 回答 0