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; }