【1】标准C库方式
示例代码
1 #include <ctime>
2 #include <iostream>
3 using namespace std;
4
5 void function()
6 {
7 int step = 100000000;
8 while (step--);
9 }
10
11 int main()
12 {
13 clock_t start = clock(); //获取当前系统时间
14
15 function();
16
17 clock_t end = clock();
18
19 double cost = ((double)(end - start)) / CLOCKS_PER_SEC;
20
21 cout << "cost time : " << cost << endl;
22
23 system("pause");
24 }
25
26 /* result:
27 cost time : 0.166
28 请按任意键继续. . .
29 */
【2】C++库方式
C++11之后才引入
示例代码:
1 #include <chrono>
2 #include <iostream>
3
4 using namespace std;
5
6 void function()
7 {
8 int step = 100000000;
9 while (step--);
10 }
11
12 int main()
13 {
14 auto beginTime = std::chrono::high_resolution_clock::now();
15
16 function();
17
18 auto endTime = std::chrono::high_resolution_clock::now();
19 auto elapsedTime = std::chrono::duration_cast<std::chrono::microseconds>(endTime - beginTime);
20
21 double cost = (double)elapsedTime.count();
22
23 cout << "cost time : " << cost << endl;
24
25 system("pause");
26 }
27
28 /* result:
29 cost time : 164445
30 请按任意键继续. . .
31 */
【3】windows API方式
示例代码:
1 #include <windows.h>
2 #include <iostream>
3
4 using namespace std;
5
6 void function()
7 {
8 int step = 100000000;
9 while (step--);
10 }
11
12 int main()
13 {
14 //DWORD dwStart = GetTickCount();
15
16 ULONGLONG dwStart = GetTickCount64();
17
18 function();
19
20 ULONGLONG dwEnd = GetTickCount64();
21
22 auto cost = (dwEnd - dwStart);
23
24 cout << "cost time : " << cost << endl;
25
26 system("pause");
27 }
28
29 /* result:
30 cost time : 157
31 请按任意键继续. . .
32 */
为什么第14行,我们把GetTickCount这个函数注释了呢?请参见Visual Studio 提示内容: