问题标签 [system-clock]
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.
javascript - Node.js 中的单调增加时间
浏览器已经回答了这个问题here,但window.performance.now()
显然在 Node.js 中不可用。
一些应用需要稳定的时钟,即随时间单调增加的时钟,不受系统时钟漂移的影响。例如,Java 有System.nanoTime()
,C++ 有std::chrono::steady_clock
. Node.js 中有这样的时钟吗?
java - Java中获取方法时间的可靠跨平台方式
这个问题与基准无关。
我有一个 java 线程周期,它应该在接近一个时间段 T 时运行:
当然,根据计划优先选择,Thread.sleep(sleepTime)
可能略大于sleepTime
. 但是,平均而言,这种方法提供了周期 T 的接近平均近似值。
问题
方法:
提供挂钟参考时间。如果机器的时钟向前或向后改变,则此实现无法提供周期 T 的近似值。例如:
Thread.sleep(30000)
如果有人在“运行”时提前三分钟手动更改时钟,则会打印类似 204283 的内容。
由于系统时钟总是在变化(时间服务器同步、系统负载、用户设置等),因此使用System.currentTimeMillis()
不足以满足我的需求。
失败的解决方案
为了提供更强大的时间参考,我尝试了以下 getTime 方法的实现:
问题getCurrentThreadCpuTime
在于,产生的时间量是线程消耗的 CPU 时间,而不是那一刻剩下的时间。不考虑线程休眠或阻塞的剩余时间。例如:
getCurrentThreadCpuTime
getTime 的实现令人惊讶地打印“0”(零) 。
我想要的是
我想我需要的是这样的:
问题是我没有找到一种实现跨平台方式getAmountOfCPUCyclesSinceTheProgramStarted()
的java方法。getCPUFrequency()
最后,我的问题是:如何以可靠的跨平台方式获取java中方法的花费时间?
android - SystemClock.uptimeMillis() 中设置的变量无法重置
求你原谅我是一个新的开发者。
我正在使用SystemClock.uptimeMillis
inside ofRunnable
使它看起来像秒表。我从谷歌拿了秒表源代码。之后,我每 30 秒进行一次修改,变量(命名为价格)会增加。
奇怪的是,当我重新开始秒表时,价格不会回到初始值。我试过重置价格值,onActivityResult
但秒表显示的是随机数。如何让价格变量回到初始值?
这是我的代码:
当按钮单击该方法时触发此代码
android - 我们的秒表应用程序有多准确?
最近我正在研究一个也可以计算毫秒的秒表。我读到的文章没有必要每 1/10 秒更新一次计时器 TextView,因为那是我们的眼睛可以记录图像的时间。这是每个秒表应用程序的工作方式吗?甚至所有安卓设备上的内置秒表?
如果应用程序可以准确地显示每毫秒,建议一个方法,因为我被卡住了。
c++ - 在等待 std::condition_variable 时如何处理系统时钟的变化?
我正在尝试在 C++11 中实现一些跨平台代码。此代码的一部分使用std::condition_variable实现信号量对象。当我需要对信号量进行定时等待时,我使用wait_until或 wait_for。
我遇到的问题是,在基于 POSIX 的系统上,condition_variable 的标准实现似乎依赖于系统时钟,而不是单调时钟(另请参阅:this issue against the POSIX spec)
这意味着如果系统时钟更改为过去的某个时间,我的条件变量将阻塞的时间比我预期的要长得多。例如,如果我希望我的 condition_variable 在 1 秒后超时,如果有人在等待期间将时钟调回 10 分钟,则 condition_variable 会阻塞 10 分钟 + 1 秒。我已经确认这是 Ubuntu 14.04 LTS 系统上的行为。
我需要依靠这个超时至少有点准确(即,它可能在一定的误差范围内不准确,但如果系统时钟发生变化,仍然需要执行)。看来我需要做的是编写我自己的 condition_variable 版本,它使用 POSIX 函数并使用单调时钟实现相同的接口。
这听起来像是很多工作——而且有点乱。有没有其他方法可以解决这个问题?
python - 如何在python中获取由于系统时钟回退而不会倒退的当前unix纪元时间
我正在使用 python 时间模块,我在其中获取当前的 unix 时间time.time()
。但是,我注意到当我获取当前时间并将其与之前的time.time()
调用进行比较时,该值较低。
替代方法是使用time.monotonic()
,因为它始终确保时间增加。但是它的返回值起点是未定义的意思,不是unix时间。
是否有其他一些调用(或模块)可以让我获得一个单调的 unix 时间,或者我是否必须获取当前日期和时间并手动转换它?
linux - PPS:如何从 PPS 调整系统时钟?
在 Linux PPS 文档中说:
PPS 的意思是“每秒脉冲”,而 PPS 源只是每秒提供高精度信号的设备,以便应用程序可以使用它来调整系统时钟时间。
但我还没有找到如何调整系统时钟定时器(hwclock)。我宁愿不使用 ntp,只是以最简单的方式让系统计时器与 PPS 同步。
是否可以从 PPS 调整系统计时器(不使用 ntp)?
我也不完全理解 pps 时间,可以使用time_pps_fetch
命令从用户空间读取(参见 ppstest.c 示例)
如果它是一个只有“每秒脉冲”的时钟,那么 linuxpps 如何提供纳秒分辨率?
python - 如何在 python 中提高睡眠/暂停时间的准确性?
我进行了一个实验来比较 python 和 C++ 中的睡眠/暂停时间准确性
实验总结:
在 1000000 次迭代的循环中,每次迭代睡眠 1 微秒。
预期持续时间: 1.000000 秒(对于 100% 准确的程序)
在蟒蛇中:
预期: 1.000000 秒,实际(大约): 2.603796
在 C++ 中:
预期: 1.000000 秒,实际(大约): 1.000040
很明显C++要准确得多,但是我正在用python开发一个项目,需要提高准确性。有任何想法吗?
PS如果你建议另一个python库/技术也没关系,只要它更准确:)
algorithm - Lamport同步算法讨论中的“部分排序”和“全排序”是什么意思?
我的理解是,部分排序和全排序是两组规则。
偏序有三个规则:
(1)如果a和b是同一进程中的两个事件并且a在b之前,那么a->b。
(2) ...
(3) ...
那么什么是全排序呢?
为什么会这样命名?