提示信息

C++ 记录程序运行时间的四种方法

难以启齿 已关注

在C++中,有多种方法可以用于记录程序的运行时间。以下是四种常见的方法:

  1. 使用<ctime>库中的clock()函数

    • clock()函数可以用于计算CPU时间。它返回自程序启动以来处理器使用的时间,这个时间可以用来估算程序执行的耗时。
    1. #include <iostream>
    2. #include <ctime>
    3. int main() {
    4. std::clock_t start, end;
    5. start = std::clock();
    6. // 要测量的代码段
    7. for (int i = 0; i < 1000000; ++i);
    8. end = std::clock();
    9. double duration = double(end - start) / CLOCKS_PER_SEC;
    10. std::cout << "CPU Time used: " << duration << " seconds" << std::endl;
    11. return 0;
    12. }
  2. 使用<chrono>

    • std::chrono库提供了更高精度和更高自由度的时间测量功能,通常可以记录从纳秒到小时的时间。
    1. #include <iostream>
    2. #include <chrono>
    3. int main() {
    4. auto start = std::chrono::high_resolution_clock::now();
    5. // 要测量的代码段
    6. for (int i = 0; i < 1000000; ++i);
    7. auto end = std::chrono::high_resolution_clock::now();
    8. std::chrono::duration<double> duration = end - start;
    9. std::cout << "Time used: " << duration.count() << " seconds" << std::endl;
    10. return 0;
    11. }
  3. 使用<sys/time.h>库(在Linux和UNIX系统上)

    • 这种方法不如<chrono>通用,但在一些情况下仍然可能使用。
    1. #include <iostream>
    2. #include <sys/time.h>
    3. int main() {
    4. struct timeval start, end;
    5. gettimeofday(&start, nullptr);
    6. // 要测量的代码段
    7. for (int i = 0; i < 1000000; ++i);
    8. gettimeofday(&end, nullptr);
    9. double duration = (end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec) / 1e6;
    10. std::cout << "Time used: " << duration << " seconds" << std::endl;
    11. return 0;
    12. }
  4. 使用第三方库,如Boost

    • 如果在项目中使用Boost库,可以使用Boost提供的时间测量工具。
    1. #include <iostream>
    2. #include <boost/chrono.hpp>
    3. int main() {
    4. boost::chrono::high_resolution_clock::time_point start = boost::chrono::high_resolution_clock::now();
    5. // 要测量的代码段
    6. for (int i = 0; i < 1000000; ++i);
    7. boost::chrono::high_resolution_clock::time_point end = boost::chrono::high_resolution_clock::now();
    8. boost::chrono::duration<double> duration = end - start;
    9. std::cout << "Time used: " << duration.count() << " seconds" << std::endl;
    10. return 0;
    11. }

不同的方法有不同的应用场景,可以根据具体需要选择。其中std::chrono是现代C++最佳实践,推荐在C++11及以上标准中使用。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
难以启齿 关注 已关注

最近一次登录:2024-11-19 23:30:33   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图