问题 用于逐位操作的高性能库?


处理非常大的bool数据集,尝试使用逐位操作来处理它,寻找一些处理bit-set的库,它可以:

  1. 动态集,可以通过指针或引用传递。
  2. 按位读写。
  3. 计数设置位和快速。

明显 std::bitset任何建议的功能都太有限了?


12250
2018-01-21 03:20


起源

你看过boost bitset了吗? - leemes
@leemes目前只是看着它,但对其他选项开放,我对那里的性能问题非常关注,因为数据集非常大并且有很多sum()之类的选项。 - user0002128
我认为增强bitset(或者可能是bitfield,bitvector,long_bitset,不知道确切名称)是针对此进行优化的。你可以看一下boost文档;应该在那里提到优化类的用例。 - leemes
由于您担心性能,因此值得一提:配置整个应用程序,瓶颈可能完全不同,您可能需要更改方法以提高性能。然后当然在真实情况下对实际位操作进行基准测试。 - hyde
C标签是否相关? - mouviciel


答案:


GMP 提供 低级位功能 在任意大小的自然数上。这些是“低级GMP功能,用于实现高级GMP功能,但也适用于时间要求严格的用户代码。”

这些包括 mpn_popcount 计数1位,和 mpn_copyi 提取子序列。


11
2018-01-21 03:37



看起来非常有趣,特别是可以计算单个数据单元而不是整个bitset的计数功能,谢谢 - user0002128


BitMagic库 可能也是你的朋友。


2
2018-01-21 10:12