gpt4 book ai didi

c++ - 如何提高C++ STL bitset效率?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:42:44 26 4
gpt4 key购买 nike

我有一个程序大量使用了 STL 的 bitset。 gperftools 显示性能瓶颈之一是 std::_Base_bitset::_S_maskbit(内联)。

从这里https://gcc.gnu.org/onlinedocs/gcc-4.6.2/libstdc++/api/a00775_source.html#l00078似乎总是重新计算用于访问或修改 bitset 的掩码。这让我想知道查找表是否有帮助。

我尝试实现我自己的 bitset 版本,其中使用了掩码查找表。但是由于我的版本没有使用像__builtin_memcpy 这样的gcc 内置指令,它实际上比STL bitset 慢得多。

所以我想知道是否有办法替换std::_Base_bitset::_S_maskbit,或者我应该通过复制STL的代码来编写自己版本的bitset bitset 并添加一个查找表。

谢谢!

最佳答案

如果你的位集足够小,使用 std::vector<char>可以是一个改进。当然,您使用了 8 倍的内存,但您不再需要计算掩码,分析显示这与您相关。

由于对寻址模式和预取器的良好支持,在 x86 上访问数组非常快,但位集更多地属于 ARM 领域,其中许多操作可以包括自由位移位。

关于c++ - 如何提高C++ STL bitset效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26154391/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com