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++程序运行时间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Qt中互斥锁QMutex和QMutexLocker的使用

    Qt中互斥锁QMutex和QMutexLocker的使用

    本文主要介绍了Qt中互斥锁QMutex和QMutexLocker的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 关于C语言 文件读写 feof 函数

    关于C语言 文件读写 feof 函数

    这篇文章主要给大家分享的是关于C语言文件读写 feof 函数 ,feof 是 C 语言标准库函数,其功能是检测文件结束符,如果文件结束,则返回非 0 值,否则返回 0,感兴趣的小伙伴请跟小编一起来看看下面文章的内容吧
    2021-10-10
  • Linux C/C++实现DNS客户端请求域名IP的示例代码

    Linux C/C++实现DNS客户端请求域名IP的示例代码

    DNS全称:Domain Name System,域名解析系统,是互联网的一项服务,本文主要介绍了C/C++如何实现DNS客户端请求域名IP,感兴趣的可以了解下
    2024-03-03
  • 使用C语言判断英文字符大小写的方法

    使用C语言判断英文字符大小写的方法

    这篇文章主要介绍了使用C语言判断英文字符大小写的方法,分别为isupper()函数和islower()函数的使用,需要的朋友可以参考下
    2015-08-08
  • Matlab绘制有趣的罗盘时钟的示例代码

    Matlab绘制有趣的罗盘时钟的示例代码

    这篇文章主要介绍了如何利用Matlab实现绘制有趣的罗盘时钟,文中的示例代码讲解详细,对我们学习Matlab有一定的帮助,需要的可以参考一下
    2023-01-01
  • C语言用封装方法实现飞机大战游戏

    C语言用封装方法实现飞机大战游戏

    这篇文章主要为大家详细介绍了C语言用封装方法实现飞机大战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C++实现指针空值的示例代码

    C++实现指针空值的示例代码

    本文主要介绍了C++实现指针空值的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • C++ 输入scanf()和输出printf()的操作

    C++ 输入scanf()和输出printf()的操作

    这篇文章主要介绍了C++ 输入scanf()和输出printf()的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • VSCode插件开发全攻略之打包、发布、升级的详细教程

    VSCode插件开发全攻略之打包、发布、升级的详细教程

    这篇文章主要介绍了VSCode插件开发全攻略之打包、发布、升级的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • C语言关键字const和指针的结合使用

    C语言关键字const和指针的结合使用

    这篇文章主要介绍了C语言关键字const和指针的结合,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02

最新评论