在 C++ 中获取准确的执行时间(微秒)

2023-12-03

我想获得用 C++ 实现的程序的精确执行时间(以微秒为单位)。 我尝试使用clock_t获取执行时间,但它不准确。

(请注意,微基准测试是hard。准确的计时器只是短时间区域获得有意义的结果所需的一小部分。看绩效评估的惯用方式?一些更一般的注意事项)


如果您使用的是 c++11 或更高版本,您可以使用std::chrono::high_resolution_clock.

一个简单的用例:

auto start = std::chrono::high_resolution_clock::now();
...
auto elapsed = std::chrono::high_resolution_clock::now() - start;

long long microseconds = std::chrono::duration_cast<std::chrono::microseconds>(
        elapsed).count();

该解决方案具有便携的优点。


当心微基准测试很难。很容易测量错误的事情(例如基准测试优化),或者在定时区域中包含页面错误,或者无法考虑 CPU 频率空闲与睿频。

See 绩效评估的惯用方式?一些一般提示,例如通过首先测试另一个来进行健全性检查,看看是否会发生变化,哪个看起来更快。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C++ 中获取准确的执行时间(微秒) 的相关文章

  • C# 创建函数队列

    我写了一个名为 QueueManager 的类 class QueueManager Queue functionsQueue public bool IsEmpty get if functionsQueue Count 0 return
  • 为什么 VB.NET 和 C# 中针对值检查 null 存在差异?

    In VB NET http en wikipedia org wiki Visual Basic NET有时候是这样的 Dim x As System Nullable Of Decimal Nothing Dim y As System
  • 获取 std::variant 当前持有的 typeid(如 boost::variant type())

    我已经从 boost variant 迁移到 std variant 但遇到了障碍 我在 boost type 中使用了一个很好的函数 它可以让你获取当前持有的 typeid 看https www boost org doc libs 1
  • 如何使用 MVVM 更新 WPF 中编辑的数据? [复制]

    这个问题在这里已经有答案了 我正在为聊天应用程序构建 UI 设计 在尝试更新所选联系人的消息时遇到问题 选择现有联系人 选择编辑选项 然后编辑其属性 例如用户名和图像 后 唯一进行的更改是联系人的用户名和图像 我仍然想更改 MessageM
  • Qt 计算和比较密码哈希

    目前正在 Qt 中为测验程序构建面向 Web 的身份验证服务 据我了解 在数据库中存储用户密码时 必须对其进行隐藏 以防落入坏人之手 流行的方法似乎是添加的过程Salt https en wikipedia org wiki Salt cr
  • 如何使用 wpf webbrowser 将数据发布到 Web 服务器

    我想从数据库获取数据并使用它来让用户登录到网站 我有一个包含 Web 浏览器控件的 wpf 页面 我有这样的代码 用于将用户登录到用 php 编写的网站
  • 序列化和反序列化 Visual Studio 解决方案文件 - 或以编程方式编辑?

    我想以编程方式添加和删除项目 解决方案文件夹和其他项目 例如解决方案的资源文件 但我不确定最好的方法是什么 对于那些不知道的人 高度简化 解决方案文件 sln 通常如下所示 Microsoft Visual Studio Solution
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 格式化货币

    在下面的示例中 逗号是小数点分隔符 我有这个 125456 89 我想要这个 125 456 89 其他示例 23456789 89 gt 23 456 789 89 Thanks 看看这个例子 double value 12345 678
  • 更改 IdentityServer4 实体框架表名称

    我正在尝试更改由 IdentityServer4 的 PersistedGrantDb 和 ConfigurationDb 创建的默认表名称 并让实体框架生成正确的 SQL 例如 而不是使用实体IdentityServer4 EntityF
  • C#中Enum中定义的value__是什么

    What value 可能在这里 value MSN ICQ YahooChat GoogleTalk 我运行的代码很简单 namespace EnumReflection enum Messengers MSN ICQ YahooChat
  • dropdownlist DataTextField 由属性组成?

    有没有一种方法可以通过 C 使 asp net 中的下拉列表的 datatextfield 属性由对象的多个属性组成 public class MyObject public int Id get set public string Nam
  • 使用 AdHocWorkspace 会导致“不支持语言‘C#’”。

    在VS2015中使用Microsoft CodeAnalysis CSharp Workspaces的RC2 这段代码会抛出异常 var tree CSharpSyntaxTree ParseText var workspace new A
  • .NET JIT 编译的代码缓存在哪里?

    NET 程序首先被编译为 MSIL 代码 当它被执行时 JIT编译器会将其编译为本机机器代码 我想知道 这些JIT编译的机器代码存储在哪里 它只存储在进程的地址空间中吗 但由于程序的第二次启动比第一次快得多 我认为即使在执行完成后 该本机代
  • TPL 数据流块下游如何获取源生成的数据?

    我正在使用 TPL Dataflow 处理图像 我收到处理请求 从流中读取图像 应用多次转换 然后将生成的图像写入另一个流 Request gt Stream gt Image gt Image gt Stream 为此 我使用块 Buff
  • 如何将对象转换为传递给函数的类型?

    这不会编译 但我想做的只是将对象转换为传递给函数的 t public void My Func Object input Type t t object ab TypeDescriptor GetConverter t ConvertFro
  • 如何获取 QIcon 的文件/资源​​路径

    假设我做了这样的事情 QIcon myIcon resources icon ico 我稍后如何确定该图标的路径 例如 QString path myIcon getPath 问题是 没有getPath 会员 我找不到类似的东西 但肯定有办
  • 使用 Chrome 和 Selenium 设置 LocalStorage

    我正在尝试使用 OpenQA Selenium 和 Chrome 设置本地存储键和值 我认为这相当微不足道 但我似乎无法让它发挥作用 我对 C 很陌生 所以我可能错过了一些东西 无论如何 我有这个功能 public static void
  • 启动画面后主窗口出现在其他窗口后面

    我有一个带有启动屏幕的 Windows 窗体应用程序 当我运行该应用程序时 启动屏幕显示正常 消失并加载应用程序的主窗体 但是 当我加载主窗体时 它出现在包含该应用程序的 Windows 资源管理器目录下 这是运行启动画面然后运行主窗体的代
  • 新的 .NET 6 控制台模板中的 C# 函数重载不起作用

    我在尝试重载该函数时遇到错误Print object in the 新的 NET 6 C 控制台应用程序模板 https learn microsoft com en us dotnet core tutorials top level t

随机推荐

  • 使用 gcc、g++ 和 gdb 在 Window 7 上设置 VSCode 进行 C/C++ 调试

    我正在遵循以下指示here 安装了cpptools 已创建tasks json包含以下内容 version 0 1 0 command g isShellCommand true showOutput always args g hello
  • 如何将“setcdr”与缓冲区局部变量一起使用

    我正在使用的行为setcdr这似乎表明它不限于在不同缓冲区中包含相同名称的缓冲区局部变量 我尝试过使用with current buffer 但这并不能解决问题 例如 buffer A and buffer B两者都包含一个名为的局部变量v
  • 如何反转 Firebase 中的项目顺序

    如何在 Firebase 中反转此列表的顺序 我希望最后一项成为第一项 我尝试使用queryOrdered 但这并没有什么区别 我列出了从 Firebase 检索的数据结构的一个示例 KhPRPQEOiVzPW7G2iQI amount 2
  • JMeter:如何在多个线程组循环中重用/重新打开 CSV?

    在 JMeter 中 我有一个 CSV 用户列表 每个用户都应该上传一定数量的文件 这些文件列在第二个 CSV 中 每个用户必须上传所有文件 由于服务器无法一次处理所有线程 因此我将线程组设置为使用 X 个用户并循环 Y 次 以便最终所有用
  • dataWithContentsOfURL 通过蜂窝网络返回 NSCocoaErrorDomain Code=256,但不通过 wifi 返回

    我遇到了一个非常奇怪的问题 dataWithContentsOfURL 已开始通过蜂窝网络返回错误代码 256 但不通过 wifi 返回错误代码 操作无法完成 可可错误 256 我确实有蜂窝数据连接 并且它正在运行 所以我的蜂窝连接不是问题
  • 在 WooCommerce 中添加到购物车之前尽早设置运输邮政编码

    我希望客户能够在将产品添加到购物车之前设置他们的邮政编码 然后保存该邮政编码并用于定义可用的交付方式 我已经制作了以下功能 但它并不总是有效 而且我不确定应该使用哪些 Woocommerce 方法以及它们之间有什么区别 WC gt cust
  • 空数组自动初始化内容?

    How come int alone System out println alone 给出错误但是 int arr new int 1 System out println arr 0 等于0 当你初始化一个空数组时 它是否会自动将其内容
  • JSF 托管 bean 修改后重新部署应用程序

    为什么 JSF 托管 Bean 修改需要重新部署应用程序才能生效 开发环境 日食靛蓝 JBoss为7 JBossAS 工具 进一步解释 如果我修改 JSF 页面 只需刷新页面即可可视化修改 但 JSF 托管 bean 修改的情况并非如此 我
  • 在 SSE/AVX 中高效计算 X 的幂

    我正在寻找最有效的方法来计算浮点数的所有第一个整数幂XSSE 128 AVX 256 AVX 512 寄存器内部 128 256 和 512 位 例如对于 float AVX1 256 我想进入寄存器X 1 X 2 X 3 X 4 X 5
  • 屏幕键盘 gui 无法正常工作

    我正在尝试在顶部显示文本区域并在其下方显示键盘键 但是当我运行此代码时 整个事情是混合的 我做错了什么以及如何解决它 这是代码 public Keyboard super Typing Tutor pane1 new JPanel pane
  • 将 Microsoft Ajax Minifier 与 Web 安装项目和源代码管理结合使用

    我刚刚开始调查微软 Ajax 缩小器 4 0与我正在开发的 Visual Studio 2008 Web 应用程序一起使用 事实证明 将其挂接到 csproj 文件中非常容易 因此它为所有脚本生成 min js 文件 但是我对如何将其与 W
  • A 类声明多个 JSON 字段

    我有一个类 A 它有一些私有字段 同一个类扩展了另一个类 B 它也有一些类 A 中的私有字段 public class A extends B private BigDecimal netAmountTcy private BigDecim
  • R - 传单 - highcharter 工具提示

    我想包括一个highcharter情节在我的leaflet弹出窗口 在来自的帮助下this帖子我能够包括sparkline阴谋 但是 由于我缺乏 html 技能 我不知道如何修改代码来使用highcharter 这个答案关于SO 答案中的示
  • Logstash 5.1.1“错误的 URI(不是 URI?)”

    Error c Program Files Logstash bin gt logstash bat e 输入 stdin 输出 stdout 发生意外错误 错误 gt 错误的 URI 不是URI File c Program Files
  • MongoDB 全文搜索,两个字段自动完成

    我正在尝试实施MongoDB 图集搜索 目标是在 2 个字段上自动完成 我目前有这个实现 const searchStep search Read more about compound here https docs atlas mong
  • PDFbox 找不到字体:/Helv

    我尝试将表单字段添加到现有 PDF 文件 但出现以下错误PDFbox Could not find font Helv 我的 Java 代码具有以下视图 PDDocument pdf PDDocument load inputStream
  • 我该如何处理这样的物体

    我需要以表格形式显示错误 如果子级中定义了错误 则可以将错误附加到输入名称表单中 这是常见情况 1 但可能会发生错误是在 json 对象的根节点中定义的 2 在这种情况下 应将其附加到 formElement 以下代码 3 适用于情况 1
  • C2DM 服务器。我们现在应该使用 OAuth 吗?

    我正在为我的 Android 应用程序实现 C2DM 客户端 Android 进展顺利 但我对实现服务器端有点困惑 我的服务器是C NET 官方文档链接到 404 当涉及到身份验证时 https developers google com
  • 类型不匹配错误。 F# 类型推断失败?

    我正在尝试在 F 中编写一个方法 该方法根据传递到该方法的值的类型返回泛型类型的新实例 在金融服务指数中 open System Collections Generic type AttributeIndex lt a gt inherit
  • 在 C++ 中获取准确的执行时间(微秒)

    我想获得用 C 实现的程序的精确执行时间 以微秒为单位 我尝试使用clock t获取执行时间 但它不准确 请注意 微基准测试是hard 准确的计时器只是短时间区域获得有意义的结果所需的一小部分 看绩效评估的惯用方式 一些更一般的注意事项 如