关于C++ 11中头的几个问题

2023-12-27

我有几个关于新的问题<chrono>C++ 11 中的标头。使用 Windows 7、Visual Studio 2012。

看例子http://en.cppreference.com/w/cpp/chrono http://en.cppreference.com/w/cpp/chrono

#include <iostream>
#include <chrono>
#include <ctime>

int fibonacci(int n)
{
    if (n < 3) return 1;
    return fibonacci(n-1) + fibonacci(n-2);
}

int main()
{
    std::chrono::time_point<std::chrono::system_clock> start, end;
    start = std::chrono::system_clock::now();
    int result = fibonacci(42);
    end = std::chrono::system_clock::now();

    int elapsed_seconds = std::chrono::duration_cast<std::chrono::seconds>
                             (end-start).count();
    std::time_t end_time = std::chrono::system_clock::to_time_t(end);

    std::cout << "finished computation at " << std::ctime(&end_time)
              << "elapsed time: " << elapsed_seconds << "s\n";
}

可能的输出

finished computation at Sat Jun 16 20:42:57 2012
elapsed time: 3s
  1. 我注意到该示例使用std::chrono::system_clock::now();这是否意味着它只能用于测量经过的时间而不是 CPU 时间???如果我想测量 CPU 时间,我应该使用什么时钟?
  2. 请注意elapsed time: 3s输出四舍五入为整数。有没有办法让它变得更颗粒化?

  1. Correct

    根据标准:

    system_clock 代表系统范围实时时钟的挂钟时间。

    The <chrono>库不提供测量 CPU 时间的机制,所以如果你想要的话,你必须依靠旧的<ctime>库和使用std::clock().

    (如果您的目标是 Windows,您将不得不依靠 Windows 提供的任何特定于平台的 API 来获取 CPU 时间,因为正如您所指出的,它们的std::clock()无法正常工作。)

    system_clock更像是一个对应物std::time()std::clock()。 (例如,请注意system_clock提供之间的转换system_clock::time_points and time_t.)我想缺少时钟<chrono>用于测量 CPU 时间的原因是由于标准委员会的时间限制以及该功能比系统挂钟和实时时钟使用较少的事实。

    如果您想要 CPU 时间,但也想要以下好处<chrono>规定,您应该实现一个时钟类型,该类型符合标准中概述的时钟概念,并提供 CPU 时间,可能在内部使用std::clock().

  2. 这条线说

    int elapsed_seconds = std::chrono::duration_cast<std::chrono::seconds>
                        (end-start).count();
    

    是导致时间四舍五入为整数秒的原因。您可以选择任何您想要的周期,也可以使用浮点表示形式以允许非整数值:

    std::int64_t elapsed_attoseconds =
        std::chrono::duration_cast<std::chrono::duration<std::int64_t, std::atto>>
            (end-start).count();
    
    double elapsed_seconds =
        std::chrono::duration_cast<std::chrono::duration<double,std::ratio<1>>>
            (end-start).count();
    

    请注意,在实际代码中,您应该避免使用.count()逃避由提供的强类型chrono::duration直到你绝对必须这样做。

    auto total_duration = end - start;
    auto seconds = std::chrono::duration_cast<std::chrono::seconds>(total_duration);
    auto milli = std::chrono::duration_cast<std::chrono::milliseconds>(total_duration - seconds);
    
    std::cout << seconds.count() << "s " << milli.count() << "ms\n";
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于C++ 11中头的几个问题 的相关文章

  • 为什么相同的代码在同一台计算机上的执行时间可能不同?

    我是 C 编程新手 我编写了代码并希望获得它的运行时 这就是我所做的 每次运行代码时 我都会得到不同的运行时值 这样对吗 或者我的代码有问题吗 int main int argc char argv time t start end sta
  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 将 Excel 导入到 Datagridview

    我使用此代码打开 Excel 文件并将其保存在 DataGridView 中 string name Items string constr Provider Microsoft Jet OLEDB 4 0 Data Source Dial
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • (de)从 CSV 序列化为对象(或者最好是类型对象的列表)

    我是一名 C 程序员 试图学习 C 似乎有一些内置的对象序列化 但我在这里有点不知所措 我被要求将测试数据从 CSV 文件加载到对象集合中 CSV 比 xml 更受青睐 因为它更简单且更易于人类阅读 我们正在创建测试数据来运行单元测试 该集
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了

随机推荐

  • Ruby 中的 base64 编码字符串中的奇怪 \n

    Ruby 中内置的 Base64 库添加了一些 n 我无法找出原因 对于这个特殊的例子 irb main 001 0 gt require rubygems gt true irb main 002 0 gt require base64
  • 为什么通过同一 COM 对象的不同接口检索的 IUnknown* 指针具有相同的值?

    我有以下 COM 接口层次结构和实现它们的类 interface IX public IUnknown interface IY public IUnknown class CA public IX public IY Here class
  • 在 Shopify 中选中自定义复选框时更改产品价格

    当选择自定义复选框时 我需要能够更改产品价格 我想为一种产品添加 10 00 美元的雕刻费用 为其他产品的雕刻费用添加 20 美元 我无法将其添加为 Shopify 中的变体 因为它们根据变体处理库存 我正在使用 Debut 主题 我有在液
  • 动态添加/覆盖property属性的setter和getter

    我需要使用 模仿语法糖语法在子类中动态装饰 getter 和 setter 对方法 我正在努力解决 setter 的实现问题 class A def init self x print init self x x property def
  • Loopj Android 异步 Http - onFailure 未触发

    我正在使用来自loopj的很棒的异步http库 但是我遇到了一个小障碍 如果用户没有互联网连接或失去连接 应用程序将不会返回任何内容 这部分是预期的 但它也不会触发 onFailure 方法 另外 我在有互联网连接时使用的代码确实有效 因此
  • Xcode 8 在 Interface Builder 中扭曲和拉伸图像

    在 Xcode 图像资源文件夹中添加了 3 个 PNG 文件 1x 2x 3x 使用图像向 Interface Builder 添加按钮时 它看起来扭曲仅在界面生成器中 这在 Xcode 7 中工作得很好 有谁知道我需要做什么来解决这个问题
  • Nodejs Passport - 使用多种 Google 策略

    我不确定这是否可行 但我想使用多个 Google 策略 以便根据链接 用户使用一组不同的范围 我创建了两个单独的护照变量 passport require passport passport2 require passport 我将它们设置
  • 使用字母数字子集生成 1M 个唯一随机密钥

    我想生成 1M 个随机 出现的 唯一字母数字密钥并将它们存储在数据库中 每个密钥的长度为 8 个字符 并且仅使用子集 abcdefghijk n pqrstuvxyz 和 0 9 字母 l m o 和 w 被丢弃 由于印刷空间有限 m 和
  • javascript/jquery 中是否有等效的 PHP date() ? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试计算一年中的某一天 无论是今天还是其他日期 在 PHP 中 我可以使用 date 函数并做任
  • 编写库(而不是应用程序)时如何处理异常 - Java

    我目前正在为 RESTful Web 服务 API 编写 Java 包装器 我现在正在尝试清理一些异常处理 但不确定采取什么方法 这是一个供 Java 程序员使用的工具 因此我无法像处理最终用户应用程序那样真正处理它 如果我有一个方法 连接
  • 如何替换元胞数组中的元素?

    我有一个元胞数组 A NaN k m n 我想用 NaN 替换除 A 的第三个元素之外的所有元素以获得 B NaN NaN m NaN 请对我如何解决这个问题有任何帮助 建议吗 另外 是否可以通过一行代码来完成此操作 您可以创建一个所有 N
  • 使用Random.range生成级别no而不重复

    我尝试使用递归来解决手头的问题 如下所示 int newlevelgen int exampleno Random Range 1 4 if exampleno lastlevelno lastlevelno exampleno retur
  • Sling 重写器的工作原理说明

    我想了解 sling url 重写是如何工作的 我正在关注这个网址 http www cognifide com blogs cq multidomain cq mappings and apache configuration http
  • 自托管 WCF 服务无法通过 WCFTestClient 进行测试

    我正在尝试使用 WCFTestClient 测试我的自托管 wcf 服务 我收到这样的错误 错误 无法从中获取元数据http localhost 2303 MyService http localhost 2303 MyService如果这
  • Django 模型字段。自定义字段值设置器

    有没有办法在 django 自定义属性设置器中执行这样的操作 class MyModel models Model myfield models CharField length 250 myfield setter def set pas
  • 读取 COBOL 中的 STDIN (SYSIN)

    我想从 COBOL 中的 STDIN 又名 SYSIN 中读取行 现在我只想把它们打印出来 这样我就知道我已经拿到了它们 从我读到的所有内容看来 这应该有效 IDENTIFICATION DIVISION PROGRAM ID APP EN
  • 无法解析 ApplicationModule 的参数:(?)

    对 Angular 来说还很陌生 我的应用程序包含 1 个服务和 3 个组件 编译成功 我收到此错误 但不知道出了什么问题 未捕获的错误 无法解析 ApplicationModule 的所有参数 Debugging gave me very
  • 使用 oembed 端点获取 Instagram 的视频媒体源

    上下文 我有一段 jQuery ajax 代码 直到最近几周左右 它已经愉快地工作了大约 9 个月 此代码使用 Instagram 的嵌入端点 http instagram com developer embedding 这使我能够从正常的
  • 在python中生成IMEI

    你好 我正在尝试在 python 中创建一个函数来生成有效的 IMEI 号码 所以这是我的函数 IMEI 验证使用 Luhn 算法 所以我尝试在我的脚本中实现它 def getImei num suma 0 for i in range 0
  • 关于C++ 11中头的几个问题

    我有几个关于新的问题