問題がある 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 にコメントを付けると、コードは約 1 秒で実行されます。109ms;
- LINE2 のみをコメントすると、コードは約実行されます。115 ミリ秒で。
- LINE 1 と bit_count=0 をコメントすると、コードは約 130 ミリ秒実行されます。
- 両方の行 (LINE 1 と 2) がコメント化されていない場合、コードは約 1 秒で実行されます。350ミリ秒。
LINE1 と LINE2 を使用するとコードが遅くなるのはなぜですか? 納得のいく説明が見つかりません。
vec.push_back(bit_count) も試してみましたが、これも遅いことに注意してください。また、さまざまなキャスト操作を試みましたが、成功しませんでした。