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

 更新时间:2025年03月17日 11:29:00   作者:草海桐  
在学习过程中很重要的一个必会的小技巧:计算某一段代码的执行时间,可以用来分析代码的效率和算法的时间复杂度等等(个人主要是在总结各种排序算法时遇到的这个方法),本文给大家介绍了C++记录程序运行时间的四种方法,需要的朋友可以参考下

1. 使用 <chrono> 库(C++11及以后版本)

<chrono> 库提供了高精度的时间测量功能。

#include <iostream>  
#include <chrono>  
  
int main() {  
    auto start = std::chrono::high_resolution_clock::now();  
  
    // Your code here  
    // ...  
  
    auto stop = std::chrono::high_resolution_clock::now();  
    auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(stop - start).count();  
  
    std::cout << "Elapsed time: " << duration << " ms\n";  
  
    return 0;  
}

2. 使用 <ctime> 库(较旧但常用的方法)

<ctime> 库提供了基于系统时间的函数clock()。

#include <iostream>  
#include <ctime>  
  
int main() {  
    clock_t start = clock(); //也可以double start = clock(); 
  
    // Your code here  
    // ...  
  
    clock_t end = clock();  
    double cpu_time_used = static_cast<double>(end - start) / CLOCKS_PER_SEC;
    //  /CLOCKS_PER_SEC将结果转为以秒为单位
  
    std::cout << "CPU time used: " << cpu_time_used << " s\n";  
  
    return 0;  
}

3、使用第三方库(如Boost.Timer)

Boost库提供了一个计时器模块,用于测量代码块的执行时间。

首先,你需要安装 Boost库,并在项目中包含Boost.Timer头文件。

#include <boost/timer/timer.hpp>  
#include <iostream>  
  
int main() {  
    boost::timer::auto_cpu_timer t; // 自动测量和打印执行时间  
  
    // Your code here  
    // ...  
  
    return 0;  
}

4. 使用Windows API函数(Windows平台特有)

4.1 使用 GetTickCount()

这个函数返回从系统启动开始经过的毫秒数。GetTickCount() 的精度在1到15毫秒之间,并且其值会在大约49.7天后回绕。

#include <windows.h>  
#include <iostream>  
  
int main() {  
    DWORD start = GetTickCount();  
    // ... 执行你的代码 ...  
    DWORD end = GetTickCount();  
    std::cout << "程序运行时间: " << (end - start) << " 毫秒" << std::endl;  
    return 0;  
}

4.2 使用 QueryPerformanceCounter() 和 QueryPerformanceFrequency()

这两个函数提供了更高的精度,通常在微秒级别。

#include <windows.h>  
#include <iostream>  
  
int main() {  
    LARGE_INTEGER start, end, freq;  
    QueryPerformanceFrequency(&freq);  
    QueryPerformanceCounter(&start);  
    // ... 执行你的代码 ...  
    QueryPerformanceCounter(&end);  
    double elapsedTime = (double)(end.QuadPart - start.QuadPart) / freq.QuadPart * 1000.0; // 毫秒  
    std::cout << "程序运行时间: " << elapsedTime << " 毫秒" << std::endl;  
    return 0;  
}

到此这篇关于C++记录程序运行时间的四种方法的文章就介绍到这了,更多相关C++程序运行时间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言的进制转换及算法实现教程

    C语言的进制转换及算法实现教程

    这篇文章主要介绍了C语言的进制转换及算法实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • C++快速排序超详细讲解

    C++快速排序超详细讲解

    快速排序是一种高效的排序算法,通过分治法将数组划分为两部分,递归排序,直到整个数组有序,通过代码解析和示例,详细解释了快速排序的工作原理和实现过程,需要的朋友可以参考下
    2025-03-03
  • VS2022实现VC++打包生成安装文件图文详细历程

    VS2022实现VC++打包生成安装文件图文详细历程

    本文主要介绍了VS2022实现VC++打包生成安装文件图文详细历程,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C++红黑树应用之手搓set和map

    C++红黑树应用之手搓set和map

    这篇文章主要为大家详细介绍了如何使用红黑树封装set和map,且必须保证两种数据结构复用同一棵红黑树,且满足set和map的性质,set的value不可被改变,而map的value可以被改变,需要的可以参考一下
    2023-03-03
  • C/C++ 双链表之逆序的实例详解

    C/C++ 双链表之逆序的实例详解

    这篇文章主要介绍了C/C++ 双链表之逆序的实例详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • C++中的opeartor new和placement new使用步骤

    C++中的opeartor new和placement new使用步骤

    这篇文章主要介绍了C++中的opeartor new和placement new详解,在很多情况下,placement new的使用方法和其他普通的new有所不同。这里提供了它的使用步骤,需要的朋友可以参考下
    2022-10-10
  • FFmpeg实战之利用ffplay实现自定义输入流播放

    FFmpeg实战之利用ffplay实现自定义输入流播放

    ffplay是FFmpeg提供的一个极为简单的音视频媒体播放器,可以用于音视频播放、可视化分析。本文将利用ffplay实现自定义输入流播放,需要的可以参考一下
    2022-12-12
  • C++中继承的概念和定义

    C++中继承的概念和定义

    这篇文章主要介绍了详解C++ 中的概念和定义,帮助大家更好的理解和学习使用c++,感兴趣的朋友可以了解下,希望能给你带来帮助
    2021-08-08
  • C语言求Fibonacci斐波那契数列通项问题的解法总结

    C语言求Fibonacci斐波那契数列通项问题的解法总结

    斐波那契数列相关问题是考研和ACM中常见的算法题目,这里特地为大家整理了C语言求Fibonacci斐波那契数列通项问题的解法总结,需要的朋友可以参考下
    2016-06-06
  • C语言实现倒置字符串的两种方法分享

    C语言实现倒置字符串的两种方法分享

    这篇文章主要和大家详细介绍了利用C语言实现倒置字符串的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手尝试一下
    2022-08-08

最新评论