Linux
方法一
使用time.h中的gettimeofday(),示例代码如下,
#include <iostream>
#include <sys/time.h>
int main() {
struct timeval start, end;
double totalTime;
gettimeofday(&start, NULL);
// 在这里执行代码
...
gettimeofday(&end, NULL);
totalTime = (end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec) / 1000000.0;
std::cout << "Total time: " << totalTime << " seconds" << std::endl;
return 0;
}
使用gettimeofday()函数获取的时间是以微秒为单位的。因此,需要将微秒转换为秒,即除以 1e6,以获得以秒为单位的时间间隔。
方法二
使用time.h中的clock_gettime(),示例代码如下,
#include <iostream>
#include <time.h>
int main() {
struct timespec start, end;
double totalTime;
clock_gettime(CLOCK_MONOTONIC, &start);
// 在这里执行代码
...
clock_gettime(CLOCK_MONOTONIC, &end);
totalTime = (end.tv_sec - start.tv_sec) + (end.tv_nsec - start.tv_nsec) / 1e9;
std::cout << "Total time: " << totalTime << " seconds" << std::endl;
return 0;
}
使用clock_gettime()函数获取的时间是以纳秒为单位的。因此,需要将纳秒转换为秒,即除以 1e9,以获得以秒为单位的时间间隔。
Windows
方法一
在Windows平台上,可以使用Windows API中的GetSystemTime()、GetSystemTimeAsFileTime()或QueryPerformanceCounter()等函数来获取系统时间。下面是一个简单的示例代码,
#include <iostream>
#include <windows.h>
int main() {
LARGE_INTEGER frequency, start, end;
double totalTime;
QueryPerformanceFrequency(&frequency);
QueryPerformanceCounter(&start);
// 在这里执行代码
...
QueryPerformanceCounter(&end);
totalTime = static_cast<double>(end.QuadPart - start.QuadPart) / frequency.QuadPart;
std::cout << "Total time: " << totalTime << " seconds" << std::endl;
return 0;
}
方法二
C++11引入了<chrono>头文件,提供了高精度的时间测量功能。可以使用std::chrono::high_resolution_clock来获取高分辨率时钟,并通过std::chrono::time_point计算时间间隔。以下是一个示例代码,
#include <iostream>
#include <chrono>
int main() {
auto start = std::chrono::high_resolution_clock::now();
// 在这里执行代码
...
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> totalTime = end - start;
std::cout << "Total time: " << totalTime.count() << " seconds" << std::endl;
return 0;
}
方法三
C++标准库中的<ctime>头文件提供了clock()函数,可用于测量CPU时间。这个函数返回自程序启动以来的时钟周期数。以下是一个简单示例,
#include <iostream>
#include <ctime>
int main() {
clock_t start = clock();
// 在这里执行代码
...
clock_t end = clock();
double totalTime = static_cast<double>(end - start) / CLOCKS_PER_SEC;
std::cout << "Total time: " << totalTime << " seconds" << std::endl;
return 0;
}
标签:std,end,clock,tv,系统,获取,include,方法,start
From: https://blog.csdn.net/qq_38964360/article/details/136883804