1.如果在基于 Windows Win32 的程序(纯C++无法使用),即可以使用 GetTickCount() 函数实现。 精确到毫秒(ms)级。
- DWORD dwStart = GetTickCount();
- // 程序.......
- DWORD dwEnd = GetTickCount();
- DWORD dwTimeUsed = dwEnd - dwStart;
2. 使用 time 结构体获取时间,在纯 C++ 下可用,精确到秒(s)。
- #include<stdio.h>
- #include<time.h>
- #include<conio.h>
- int main()
- {
- time_t stime , etime ;
- time( &stime ); // get start time
- getch(); // Access
- time( &etime ); // get end time
- printf( "%ld/n" , etime - stime );
- getch();
- return 0;
- }
3. 使用CTimer类获取。(没有试用过)
- class CTimer
- {
- public:
- CTimer() {QueryPerformanceFrequency(&m_Frequency); Start();}
- void Start() {QueryPerformanceCounter(&m_StartCount);}
- double End() {LARGE_INTEGER CurrentCount;QueryPerformanceCounter(&CurrentCount); return double(CurrentCount.LowPart - m_StartCount.LowPart) / (double)m_Frequency.LowPart;}
- private:
- LARGE_INTEGER m_Frequency;
- LARGE_INTEGER m_StartCount;
- };
4. 利用VC自带的编译工具,直接用 profile 就显示出。在 VC 的链接属性页勾选profile项,然后profile(在编译菜单下),各个函数时间都出来了来。
5. 使用Clock函数生成,直接在C++里使用。精度为 0.000001秒。
- #include <iostream>
- #include <ctime>
- using namespace std;
- int max(int x,int y)
- {
- return (x>y)?x:y;
- }
- int main()
- {
- const double begin = (double)clock()/CLK_TCK;
- for(int i = 10000; i > 0; i--)
- for(int j = 10000; j > 0; j--)
- max(i, j);
- const double end = (double)clock()/CLK_TCK;
- cout <<begin<<" "<<end;
- return 0;
- }
6. 最精确的方法,C++可直接调用,精确到 ms。
- #include <ctime> //计时用的头文件
- #include <iostream>
- using namespace std;
- int main()
- {
- time_t start,end,time;
- start=clock();
- for(int i=0;i<=100000;i++) cout << i << ' ';
- cout << endl;
- end=clock();
- time=end-start;//这里的时间是计算机内部时间
- cout << endl << ""time:" << time << endl;
- system("pause");
- return 0;
- }