这是我遇到问题的 C++ 代码的一部分:
std::bitset<64>a;
std::bitset<64>b;
std::bitset<64>c;
int bit_count=0;
std::vector<int> vec(SIZE,0);
for (i=1;i<NUM;i++)
{
// I do here some operations on a and b (a and b will have bits that are set)
c=a^b;
bit_count=(int) c.count(); // LINE 1
vec[i]=bit_count; // LINE2 2
}
我的问题如下:
- 如果我评论第 1 行和第 2 行,则代码大约运行。109 毫秒;
- 如果我只评论 LINE2 代码运行大约。在 115 毫秒内;
- 如果我评论 LINE 1 并且 bit_count=0 代码运行大约 130 毫秒;
- 如果两行(第 1 行和第 2 行)均未注释,则代码大约运行。350 毫秒。
为什么我使用 LINE1 和 LINE2 时代码很慢?我找不到任何可以接受的解释。
请注意,我也尝试了 vec.push_back(bit_count),它也很慢。我也尝试了不同的演员操作,但没有成功。