📅  最后修改于: 2023-12-03 14:39:37.076000             🧑  作者: Mango
clock()
函数位于<ctime>
库(对于C++是<ctime>
或<chrono>
库)。它用于衡量程序运行所花费的CPU时间。本篇介绍将重点讨论C和C++中的clock()
函数。
clock()
函数的使用方法如下:
#include <stdio.h>
#include <time.h>
int main() {
clock_t start_time, end_time;
double cpu_time_used;
start_time = clock();
// 执行你的代码
end_time = clock();
cpu_time_used = ((double)(end_time - start_time)) / CLOCKS_PER_SEC;
printf("程序执行花费的CPU时间为 %f seconds\n", cpu_time_used);
return 0;
}
<stdio.h>
和<time.h>
。start_time
和end_time
类型为clock_t
,用于存储时间。cpu_time_used
类型为double
,用于存储CPU时间。start_time = clock()
:该语句记录程序开始执行时的时间。end_time = clock()
:该语句记录程序执行结束时的时间。cpu_time_used = ((double)(end_time - start_time)) / CLOCKS_PER_SEC
:计算程序执行所花费的CPU时间(以秒为单位)。start_time
和end_time
的类型为clock_t
,这是一个整数类型,表示从某一固定点开始所经过的时钟周期数。CLOCKS_PER_SEC
是一个常量,它表示每秒钟的时钟周期数。clock()
函数所测量的时间是CPU时间,而不是实际经过的时间。所以,在多核处理器中,每个核心的时间会单独计算。clock()
函数并不适用于测量精确的时间间隔,它通常用于性能分析和速度比较。以下示例演示了clock()
函数在C和C++中的使用方法:
#include <stdio.h>
#include <time.h>
int main() {
clock_t start_time, end_time;
double cpu_time_used;
start_time = clock();
for (int i = 0; i < 1000000000; i++); // 注意:这是一个耗时的循环
end_time = clock();
cpu_time_used = ((double)(end_time - start_time)) / CLOCKS_PER_SEC;
printf("程序执行花费的CPU时间为 %f seconds\n", cpu_time_used);
return 0;
}
#include <iostream>
#include <chrono>
int main() {
std::chrono::high_resolution_clock::time_point start_time, end_time;
double cpu_time_used;
start_time = std::chrono::high_resolution_clock::now();
for (int i = 0; i < 1000000000; i++); // 注意:这是一个耗时的循环
end_time = std::chrono::high_resolution_clock::now();
cpu_time_used = std::chrono::duration<double>(end_time - start_time).count();
std::cout << "程序执行花费的CPU时间为 " << cpu_time_used << " seconds" << std::endl;
return 0;
}
clock()
函数是C和C++中用于测量程序运行花费的CPU时间的常用函数。在性能分析和速度比较方面有广泛的应用。务必注意它所衡量的是CPU时间而不是实际经过的时间,且在多核处理器中每个核心的时间是单独计算的。