2
这里是我的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
}
我的问题是这样的:
- 如果我注释LINE 1和LINE 2代码的运行时间约为109ms;
- 如果我只评论LINE2代码运行约。在115毫秒内;
- 如果我评论LINE 1和bit_count = 0,代码运行大约130毫秒;
- 如果两行(行1和行2)没有被注释,则代码运行在约。 350毫秒。
为什么当我使用LINE1和LINE2时代码变慢?我没有找到任何可以接受的解释。
请注意,我也试过vec.push_back(bit_count),它也很慢。我也试过不同的演员操作,但没有成功。
你与优化编译启用? – GWW
也许你的编译器在前三种情况下内联函数。 –
好的第一个问题。清理格式化了一下。 –