哪种方法更有效?

时间:2015-09-13 08:04:35

标签: c++

我正在玩C ++,目的是学习更好地编写高效的代码和算法。我试图解决一个非常微不足道的问题,一个整数可被2整除多少次我想出了以下方法:

int timesTwo1 ( int x ) {

    long s = clock();
    int count = 0;
    while( x%2 == 0 && (x>>=1) && (++count) && ( (x ^ INT_MAX) & 1 != 0  ) ); 
    long e = clock();

    std::cout << "timesTwo1 : " << (e - s) / double(CLOCKS_PER_SEC) * 10e6 << "us\n";
return count;
}


int timesTwo2 ( int  x ) {
    long s = clock();
    int count = 0;
    while ( x%2 == 0 && (x/=2) && (++count) );
    long e = clock();

    std::cout << "timesTwo2 : " << (e - s) / double (CLOCKS_PER_SEC) * 10e6 << "us\n"; 

    return count;
}

在我的机器上ubuntu 14.04LTS 64位intel处理器5i系列执行时间需要10us(微秒)我看到timesTwo2更具可读性但哪一个更有效?感谢

0 个答案:

没有答案