C++ 中以高精度测量执行时间2025 年 5 月 24 日 | 4 分钟阅读 在许多软件应用程序中,精确测量执行时间至关重要,尤其是在优化代码或评估各种算法的性能时。 为了在C++中精确测量执行时间,必须使用 C++11 中引入的 <chrono> 库捕获和计算时间间隔。<chrono> 库提供了一系列时钟类型和时间相关实用程序,旨在比传统的 C 风格时间函数更准确和可移植。C++ 中有几个函数用于高精度测量执行时间。 1. 时钟类型<chrono> 库提供了几种时钟类型,包括 std::chrono::steady_clock、std::chrono::high_resolution_clock 和 std::chrono::system_clock。high_resolution_clock 因为它在系统上提供最大的精度,所以通常被选择用于测量执行时间。 2. 时间点时钟函数用于获取时间点和离散的时间时刻。为了找出代码段执行所需的时间,我们记下它的开始时间和结束时间。 3. 持续时间两个时间点之间的差异表示为持续时间。它们计算代码段开始和结束之间的经过时间。 4. 持续时间单位根据我们的要求,我们可以选择持续时间单位,例如毫秒、秒或微秒。 5. 精度和可移植性虽然它通常以纳秒或更短的时间进行测量,但 <chrono> 的精度是实现定义的。 由于其跨平台和跨编译器兼容性,该库运行一致。 6. 优点
7. 用例
示例让我们举一个例子来说明如何在 C++ 中高精度测量执行时间。 输出 Execution Time: 1152 microseconds 说明1. 包含所需的头文件 这些行中包含的头文件需要用于输入/输出操作(<iostream>)和高精度计时功能(<chrono>)。 2. 捕获开始时间 在这种情况下,当前时间点是使用 std::chrono::high_resolution_clock::now() 获取的,并保存在变量 start_time 中。执行时间可以从这个点开始计算。 3. 测量执行时间的代码 此循环模拟计算密集型过程。它只是我们想要评估的代码的替代品。因此,计算执行时间时,了解操作的具体细节并不重要。 4. 捕获结束时间 与开始时间类似,此行将当前时间捕获到变量 end_time 中。这是我们需要测量其执行持续时间的代码块的结束点。 5. 计算持续时间 std::chrono::duration_cast 方法用于查找 start_time 和 end_time 之间的时间。之后,它被转换为微秒,以便使结果持续时间更易于阅读。 6. 打印执行时间 最终,执行时间计算将输出到控制台。持续时间以微秒为单位通过 duration.count() 检索。 7. 返回 0 为了通知操作系统程序已成功执行,主函数返回 0。 结论总之,此代码记录了计算密集型任务的开始和结束时间,确定了它们之间的时间间隔,并将执行时间(以微秒为单位)输出到控制台。它提供了一个基本框架,我们可以修改该框架来衡量特定C++ 程序段的执行时间。 |
C++20 引入了几个新功能,其中两个函数在管理对象生命周期方面起着至关重要的作用。这些是 start_lifetime_as 和 start_lifetime_as_array 的标准生命周期扩展。这些函数允许程序员在某些复杂条件下扩展对象生命周期,尤其是...
7 分钟阅读
三角正弦函数具有其视觉表示,即正弦波模式。使用 C++ 探索各种编程概念总是一个富有教育意义且令人娱乐的过程。本文介绍了用于创建和打印...的程序的概念、逻辑和实现。
阅读 4 分钟
简介 面无表情是构成编程逻辑技能的基础的重要模式之一。在本节中,我们将通过循环和条件语句编写一个 C++ 程序来打印面无表情。此任务需要形成一个......
5 分钟阅读
在计算机编程的动态领域中,追求优化解决方案的旅程通常需要算法实力与对编程语言的深刻理解的和谐结合。一个经常出现的引人入胜的挑战是最大化某类问题的利润的任务...
阅读 10 分钟
在 C++ 中,'std::set' 是一个存储元素的容器。创建集合时,实际上是将元素添加到其中。C++ 提供了初始化集合的方法,允许您从源或以不同方式填充它。正确启动集合很重要,因为...
阅读9分钟
计算机不理解我们用以交流的高级语言。为此,存在一种标准方法,通过这种方法,计算机收到的任何指令都能被理解。在基本级别上,每个指令都被转换成某种数字信息,称为比特。...
阅读 4 分钟
在许多情况下,编程和数学都很好地关联,它使开发人员能够尝试有趣且有趣的问题。一个有趣的此类概念是克里希那穆提数或强数。在本文中,我们将探讨克里希那穆提数的定义...
5 分钟阅读
在本文中,我们将讨论 C++ 中的自恋数。在讨论 C++ 中的自恋数之前,我们必须了解方法、示例、时间复杂度和空间复杂度。什么是自恋数?一个数字等于其各位数字的幂之和...
5 分钟阅读
探索挑战的领域,寻找子数组的任务提出了一个有趣的难题。湍流子数组由在递增和递减顺序之间交替的相邻元素标识。成功解决此任务需要对数组操作和模式识别有深刻的理解。本文深入探讨...
7 分钟阅读
C++ 程序创建的双箭头图案似乎是一种被设计成两个指向相反方向的箭头的图案。精确的对齐、用于符号放置的条件表达式或用于行和列的嵌套循环有助于所有这些图案形成的例子。它是...
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India