时钟和steady_clock测量的时间差

2023-12-13

我试图测量在代码中执行特定函数所需的时间。最初我使用的是clock()功能如下

clock_t start = clock();
do_something();
clock_t end = clock();

printf("Time taken: %f ms\n", ((double) end - start)*1000/CLOCKS_PER_SEC);

后来我读到有关chrono图书馆在C++11并尝试用std::chrono::steady_clock如下

using namespace std::chrono;

auto start = steady_clock::now();
do_something();
auto end = steady_clock::now();
printf("Time taken: %lld ms\n", duration_cast<milliseconds>(end - start).count());

第一个代码片段测量的时间(使用clock) was 89.53 ms并通过测量steady_clock was 1140 ms.

为什么两个时钟测量的时间相差这么大?


clock测量处理器时间,而steady_clock测量物理时间。所以你可以得到这样的差异,如果do_something()被其他进程抢占(例如检查邮件或其他进程)。

Daniel H在下面的评论中提出了一个很好的观点,如果do_something()不受 CPU 限制。例如,如果它休眠,则会阻止锁定互斥锁,等待条件变量等。

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

时钟和steady_clock测量的时间差 的相关文章

随机推荐

  • 从 C 代码设置 ALSA 主音量

    我一直在寻找一个简单的 C 代码示例来设置 ALSA 混音器的主音量 但找不到任何简单的内容来完成这个所谓的常见操作 我对 ALSA 完全不熟悉 所以制作我自己的最小示例需要时间 如果有人能提供一个 我会很高兴 以下内容对我有用 参数体积应
  • PHP SQL 更新数组

    我最初对以下内容感到满意 以便将第 1 行和第 2 行更新为相同的值 status 1 if POST sql UPDATE table SET status 1 WHERE id IN 1 2 db gt query sql if db
  • 正则表达式在匹配链接行为时删除 - Python

    我想删除整个链接 https www linkedin com in ACoAAAJv1l4BATlBOVqhEEaqrVNojJPWnID9Nk0 当链接包含ACo正则表达式应该从我的模式中删除整个链接 regex2 re compile
  • Asp.net 功能中是否存在带有验证器的电子邮件?

    我的要求是 如果用户在 asp net 文本框中输入电子邮件 它应该从数据库进行验证 该电子邮件是否存在 并且应该停止提交表单 是否有任何内置功能或者我必须自己制作 谢谢 阿提夫 你必须自己做 您可以按如下方式使用 AJAX
  • SQL Server:批量加载失败。数据文件中第 1 行第 1 列的列太长

    请有人在这里帮助我 已经看了几个小时了 但没有任何结果 我使用以下脚本在 SQL Express 2008 R2 中创建了一个表 CREATE TABLE Features ID int not null identity 1 1 Stop
  • 在 Delphi XE2 上使用运行时包进行构建

    我发现了类似的问题 但没有找到答案 问题是如何轻松地将所有已安装的运行时包添加到 Delphi XE2 项目中的 项目选项 包 运行时包 列表中 在 XE 和早期版本中 您可以通过简单地选中 取消选中 使用运行时包构建 来完成此操作 这些包
  • IntelliJ 在提交后显示 GIT 差异

    首先 我创建新分支 然后 我在类中添加一个新的代码行 Intellij 在左侧显示了我添加的新行的不同颜色 然后 我提交我的代码 此后 IntelliJ 不再显示我在左侧添加了新行 我不想要这样 我如何配置 IntelliJ 以便它显示与之
  • Doctrine 实体管理器导致页面中断

    我是 Symfony2 的新手 并尝试显示一个列出实体项目的页面 但是 一旦我使用下面的代码 分页符就会出现 未收到数据错误 或 ERR EMPTY RESPONSE 导致我认为我的路线不起作用并引发问题here但问题与教义有关 publi
  • Java 中希尔排序算法的变体

    有没有办法计算 for 循环的起点及其调整 原始循环有这些条件 for int gap a length 2 gap gt 0 gap 2 我调整它来设置希巴德希尔排序的条件并得到这个 for int gap int Math pow 2
  • 如何在 Rails 中渲染不同格式的一部分?

    我正在尝试生成包含一些 HTML 的 JSON 响应 因此 我有 app views foo bar json erb someKey some value someHTML 我想要它渲染 app views foo baz html er
  • 根据键值将数组拆分为更小的数组?

    我有在我的网站上执行关键字搜索的 mysql 搜索结果 它们按会员级别 0 3 排序 然而 我需要以不同的方式显示排名 比如排名 3 的格式比其他排名更突出 我正在考虑将行分成单独的数组 因此 像 array0 将包含排名为 0 的所有行等
  • 如何使用另一个字段登录 Django Allauth?

    我已经设置成功了django allauth以及自定义用户模型 让用户直接使用电子邮件和密码或通过 Facebook 登录 在这种情况下 电子邮件从 Facebook 获取并保存在自定义用户模型的电子邮件字段中 我还创建了一个移动字段 目前
  • 为什么 setTimeout(fn, 0) 有时很有用?

    我最近遇到了一个相当讨厌的错误 其中代码正在加载一个
  • 为了防止内存泄漏,已强制取消注册 JDBC 驱动程序

    当我运行网络应用程序时 我收到此消息 它运行良好 但我在关机期间收到此消息 严重 Web 应用程序注册了 JBDC 驱动程序 oracle jdbc driver OracleDriver 但在 Web 应用程序停止时无法取消注册 为了防止
  • C# ASP.NET MVC 手动访问 Request.Form 和潜在危险值

    我正在针对每个用户请求将表单和查询字符串数据序列化并保存到数据库中 这个特定的提交模型已经具有 AllowHtml 属性 并且可以很好地提交给控制器 问题出在我记录请求的 Global asax 文件内 当我访问此表单值时 出现异常 从以下
  • .BAT 文件中未读取 SET 变量

    我有这个 Windows 批处理文件 但无法正常运行 基本上 我在一个位置有一个文件夹 我需要将其复制到另一个文件夹 但还要重命名新文件夹名称 Echo off set 836147398 Taunus A3 Echo Copying 83
  • 如何以正确的顺序导入Scrapy项目密钥?

    我正在导入 Scrapy 项目密钥items py into pipelines py 问题是order导入的项目与它们在中的定义方式不同items py file My items py file class NewAdsItem Ite
  • 如何使用 python 创建字典列表

    我有一个函数返回一个列表 我在其中序列化为 json 对象并将其写入 JSON 文件 结果是正确的 但问题是它返回分隔列表中的每条记录 我想要的是返回一个包含多个字典项的列表 example 返回结果 file Name test1 txt
  • iPhone ivar命名约定[重复]

    这个问题在这里已经有答案了 可能的重复 可可 Objective C 类中变量前面的下划线如何工作 我注意到 在很多参考资料中 我发现很多时候 变量在 h 文件中被命名为 variable 然后在 m 文件中被 synthesize d 为
  • 时钟和steady_clock测量的时间差

    我试图测量在代码中执行特定函数所需的时间 最初我使用的是clock 功能如下 clock t start clock do something clock t end clock printf Time taken f ms n doubl