优化位集性能,以计算一系列值的设置位数

时间:2017-08-31 20:51:56

标签: c++ binary bitset

我已经获得了以下代码,其中包含2个整数值,用于设置我的范围[left, right]。我正在将整数转换为二进制表示,然后计算通过std::count设置的位数。我的方法有效,但我遇到了性能问题。它需要太长时间才能完成,所以理想情况下我想在12000毫秒内完成这项工作,我目前已经完成了这项工作。关于如何优化此操作的任何想法,或者我必须以不同方式处理此问题而不使用std::bitset

编辑:我不知道整数值是什么,但我知道它们不大于64位。

long long countOnes ( int left, int right )
{
  long long oneCount = 0;
  for(int i = left; i <= right; i++)
  {
    std::bitset<64> b1 (i);
    oneCount += b1.count();
  }

    return oneCount;
}

0 个答案:

没有答案