目录
- Linux
- 方法一
- 方法二
- Windows
- 方法一
- 方法二
- 方法三
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; }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)