问题标签 [chrono]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2298 浏览

c++ - std::chrono::duration 对象的绝对值

鉴于它std::chrono::duration可以表示两次之间的有符号差异,因此需要这种持续时间的绝对值似乎是一种非常常见的情况。例如,以下代码diff: -5按预期输出:

能够做类似的事情会很好:

但是,我看不到标准std::abschrono模板的任何特化,也看不到std::chrono::duration.

我应该如何将 astd::chrono::duration转换为它的绝对值?

0 投票
2 回答
116 浏览

c++11 - chrono C++11版matlabs datenum

是否有一个C++11版本的matlabsdatenum函数#include<chrono>

由于这篇文章,我已经知道它存在于 boost 中

0 投票
1 回答
907 浏览

c++ - odd behaviour using chrono::high_resolution_clock::now()

I've been looking at various game timing loop methods e.g. Glenn Fiedler and DeWitter. I found critical areas difficult to understand due to my own C++ knowledge limitations. With this I set about trying to implement my own method....I thought a good way to try to understand something about these methods.

[edit1: I'm using CodeBlocks IDE with minGW-w64 (x64-4.8.1-posix-seh-rev5) as the compiler]

[edit2: code and output windows amended to include a 3rd timer, QueryPerformanceCounter]

In trying to accomplish this I came across the following issue:

Minimal code:

For comparison purposes, the above code makes use of two timers.

On my PC the output from this is as follows:

Using duration_cast<microseconds>(finish - start).count()/1000.0 for the steady_clock we see the following:-

Notice how the high resolution clock fluctuates between 0 and 15.6ms and notice the steady_clock comparison.

The issue I have is that is that if I were to implement a fixed-time game loop where the update() code updates entity positions at exactly 1000/60 (60 update cycles a second) i.e. every 16.666etc ms - then this is very close to the returned hires timer fluctuating value! The real problem is that if I also implement an accumulator in order to accommodate both game loop frame times that are under 1000/60ms and any leftover once update() has completed, the update loop is entered sooner - and at irregular time points - than it should.

Is there an issue with the minimal code above, and if not, should I be concerned with this for any proper fixed-time implementation? Additionally, and if relevant, is there any way to isolate a program/thread so that it is not interrupted by system IRQ or other polling events? I'm guessing the hires timer may be subject to such interruptions.

0 投票
1 回答
4103 浏览

c++ - C++:std::chrono 或 boost::chrono


我正在我的代码中进行一些基准测试,并试图弄清楚我是否应该使用标准版本的 chrono 或 Boost 提供的原始版本。
我开始使用标准的,因为我想尝试一下,并注意到例如它没有像 Boost 提供的 chrono 那样提供 io 功能。
那么,关于 chrono 和一般来说,我应该使用 Boost 库还是它们的标准库对应物?

0 投票
3 回答
10816 浏览

c++ - C++11 std::chrono 现在和分钟减法

我觉得我对这个有点疯狂,但这对我来说没有意义。在我看来,如果我从now()呼叫返回的任何时间点中减去最小时间点,我应该总是得到一个正的持续时间,但这不会发生。

为什么这会打印负整数而不是正整数?(clang 3.3 或 g++ 4.8.1)

0 投票
1 回答
98 浏览

c++ - 我在这个计时器上做错了什么?

使用 chrono 我一直在尝试实现一个计时器,但我觉得我错过了一些东西。在每次迭代时调用该函数很重要,但某些指令仅在延迟后才会执行。这是一个更大项目的简化示例。我错过了什么?

输出显示被传递的延迟是循环的增量时间。不过,所花费的时间可以正常工作。示例输出:不做:2971 3000 不做:2971 3000 不做:3145 3000 做

问题是它只在我打印“做它”或“不做”行时才有效,所以我猜当我注释掉“不做”行时计时器的分辨率不够好当我这样做时,没有“做它”输出。

编辑

好的,通常情况下,编写简化版本已经为我指明了正确的方向。正如我所提到的,这似乎是一个分辨率问题。通过将单位更改为纳秒,它似乎可以按我的预期工作。我仍然想听听任何怀疑一般方法或有更聪明的想法/参考的人的意见。这是我的工作版本:

0 投票
3 回答
9796 浏览

c++ - 与 std::chrono::system_clock / std::chrono::high_resolution_clock 的时差

考虑以下代码

我们期望的是

差是100039989,应该是100000000左右

请参阅此演示,它工作得非常好。

但是,在我的机器上,根据Stack Overflow 上的这个答案,安装了几个编译器似乎会导致配置错误

因此我尝试了建议的修复:设置正确的LD_LIBRARY_PATH. 这些是我尝试过的输出组合(其中包括 4.4 和 4.6...)

差是100126,应该是100000000左右

差是100132,应该是100000000左右

差100085953,应该是100000000左右

差100156418,应该是100000000左右

似乎无论如何,使用g++-4.8任何.libstdc++g++-4.7

我在编译器/二进制调用中做错了什么还是它是一个错误g++-4.7?(这是g++-4.7.3g++-4.8.1

对于(可能是最丑陋的)解决方法,我当然可以测量一小段时间,将其与预期差异进行比较并得出一个因素。但是我非常想优雅地解决这个问题。

0 投票
3 回答
399 浏览

c++ - std::chrono 乘以持续时间

考虑这个代码示例:

我希望这能以秒为单位打印经过的时间。但它实际上以数千秒为单位打印时间(预期结果乘以 0.001)。难道我做错了什么?

编辑

因为seconds等价于duration<some-int-type>duration_cast<seconds>所以给出相同的结果。

我用 gcc-4.7.3-r1

0 投票
1 回答
1105 浏览

c++ - 从 time_point + 持续时间转换为持续时间在铿锵声中失败

此代码在 gcc-4.8 上编译并在 clang-3.3 上失败?以及如何使这段代码在 clang 上可编译?=\

错误信息:

0 投票
2 回答
404 浏览

c++ - 如何防止时间戳被重新排序?

我的理解是,C++ 允许任何不是 IO 或外部函数调用的东西都可以优化重新排序。这开始让我编写 RAII 样式函数时间戳的努力受挫。

编辑

这是一个自包含的示例,

VS 2012 的代码,经过优化