C语言之测试程序运行时间
2017-01-09 15:47
435 查看
#include <stdio.h> #include <stdlib.h> #include <time.h> int BitCount2(unsigned int n) { unsigned int c =0 ; while(n!=0) { n &= (n -1) ; // 清除最低位的1 c++; } return c ; } int BitCount4(unsigned int n) { n = (n &0x55555555) + ((n >>1) &0x55555555) ; // n相邻位相加 n = (n &0x33333333) + ((n >>2) &0x33333333) ; // n(以2为单位)相邻位相加 n = (n &0x0f0f0f0f) + ((n >>4) &0x0f0f0f0f) ; // n(以4为单位)相邻位相加 n = (n &0x00ff00ff) + ((n >>8) &0x00ff00ff) ; // n(以8为单位)相邻位相加 n = (n &0x0000ffff) + ((n >>16) &0x0000ffff) ; // n(以16为单位)相邻位相加 return n ; } int main( ) { long i=100000000; unsigned int n; clock_t start, finish; double Total_time; start = clock(); while(--i) n=BitCount2(123456789); finish = clock(); printf( "bit number::%d \n", n); Total_time = (double)(finish-start) / CLOCKS_PER_SEC; printf( "BitCount2::%f seconds\n", Total_time); printf( "\n", n); i=100000000; start = clock(); while(--i) n=BitCount4(123456789); finish = clock(); Total_time = (double)(finish-start) / CLOCKS_PER_SEC; printf( "bit number::%d \n", n); printf( "BitCount4::%f seconds\n", Total_time); return 0; }
运行结果:
如上所示:一个好的算法是多么重要。。。
相关文章推荐
- C/C++ OpenCV图像的线性混合
- C++ 类的数据成员封装
- C++ PRIMER PLUS 第六版编程答案(五)
- OpenCV3.0 Examples学习笔记(5)-distrans.cpp
- c++中在类外定义函数
- C语言循环的嵌套
- C++入门教程:C++基础教程,含进阶
- 在C++中子类继承和调用父类的构造函数方法
- Google C++单元测试框架GoogleTest---AdvancedGuide(译文)上
- 浅析可变参数列表
- C/C++ OpenCV设置感兴趣区域ROI
- 算法提高 排列数
- PAT甲级1011
- C++单例基类模板
- 让人又爱又恨得inline-block
- C++ 类的栈和堆实例化
- Template in cpp: two methods
- C语言Hello world
- [bzoj1911]特别行动队
- 线程安全单例模式(C++)