问题标签 [time-measurement]
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.
c# - 在 Windows 上进行可靠的短时间跨度测量
我需要能够准确提供 10 毫秒的“滴答声”的代码,并且鉴于许多文章与其他一些关于如何在 Windows 中完成此任务相矛盾的文章,我感到很困惑。
我已经完成了第一步 - 使用多媒体计时器提供 1 英里的睡眠。
有没有办法确保睡眠代码可以在所有机器上运行 IsHighResolution 无论是真还是假,单处理器或多处理器系统等?
[编辑] 上一个关于在多核系统中使用 StopWatch 的问题的问题: 多核和线程感知 .Net 秒表? [/编辑]
optimization - 如何将两个传感器之间的时间差测量到纳秒?
与激光门类似,我试图找出两个不同触发传感器之间的时间差。到目前为止,我正在使用 Arduino UNO,但如果有其他语言或处理器可以达到这种精度,我愿意接受。到目前为止,使用 Arduino,我一直在使用 micro() 函数来获得 4 微秒标记的精度,并且已经看到了运行高精度计时器的代码,例如:
有谁知道我如何在我的代码中使用它?我曾尝试在第一个触发器激活后使用 while 语句来简化代码,以便在等待第二个触发器激活时只做一个计数器,但这仅适用于 4 微秒内的测量。因此,如果有人知道如何以纳秒为单位进行测量,将不胜感激。(估计两次触发之间的时间差为 1.67 微秒,因此需要高精度。)
java - 认知实验的精确时间测量
我们有一个用于某些认知诊断的 Java 程序,在该程序中,我们必须以最准确的方式测量时间。到目前为止,它一直使用 psychtoolbox 来执行这些测量,但是自从从 XP 迁移到 win7 后,这些测量出现了很大的错误。
它已经到了重新编程时间测量的需要,所以我们开始重新思考整个 matlab 的想法:我们应该坚持使用 psychtoolbox 吗?也许 java 的 Nanotime 会提供更好的解决方案?
c++ - 实现上的巨大差异?
我正在为发行版编写一些功能,并使用正态分布在我的实现和 C++ Boost 之间运行测试。
给定概率密度函数(pdf: http: //www.mathworks.com/help/stats/normpdf.html)
我是这样写的:
将我的结果与使用 C++ Boost 的方式进行比较:
我并不是很惊讶——我的版本花了44278纳秒,只提升了326。
所以我玩了一下,在我的 NormalDistribution1D-Class 中编写了 probboost 方法,并比较了所有三个:
结果是(正在编译和运行检查方法 3 次)
自身提升:1082 提升更快:326;比自己的实现:44278
自身提升:774 提升更快:216;比自己的实现:34291
自身提升:769 提升更快:230;比自己的实现:33456
现在这让我很困惑:类中的方法怎么可能比直接调用的语句花费的时间长 3 倍?
我的编译选项:
java - System.currentTimeMillis() 在 Java 内存模型的上下文中是单调的吗?
是否有保证,如果一个System.currentTimeMillis()
调用发生在另一个System.currentTimeMillis()
调用(来自另一个线程)之前,第二个调用返回的值不小于第一次调用返回的值?
powerpivot - 创建一个 DAX 模式,计算图表 x 轴上日期字段和月份值之间的天数
我正在努力使用 DAX 模式,以便在图表上绘制平均持续时间值。
这是问题所在:我的数据集有一个名为的字段dtOpened
,它是一个日期值,描述了某事开始的时间,我希望能够计算自该日期以来的持续时间(以天为单位)。然后,我希望能够在一段时间内创建自该日期以来的平均持续时间。在考虑现在的值时很容易做到,但我希望能够显示一个图表,描述x 轴上不同时间段(月/季度/年)的平均值)。
我面临的问题是,如果我创建一个计算列来查找当前年龄 ( NOW() - [dtOpened]
),那么它总是使用该NOW()
函数——这对历史时间跨度没有用处。也许我需要一个度量,而不是计算列,但我不知道该怎么做。
我曾考虑过使用LASTDATE
( 而不是NOW
) 来计算任何单个月/季度/年的过滤器上下文中的最后一个日期,但如果当前月份只有一半,那么它可能需要考虑今天的日期作为从中减去该值的dtOpened
值。
我将不胜感激您能给我的任何帮助或指示!
c++ - 如何在 Qt 中测量函数运行时间?
我在 Qt 中调用argon2 - 内存密集型散列函数并测量其运行时间:
在 argon2 库的测试用例中,时间以另一种方式测量:
我完全按照他们在测试用例中调用的方式调用该函数。但是我得到了两倍大的数字(慢了两倍)。为什么?如何在 Qt 中测量函数运行时间?什么时钟()实际测量?
环境: virtualBox,Ubuntu14.04 64bit,Qt5.2.1,Qt Creator 3.0.1。
linux - 即使使用 VDSO,clock_gettime 也可能非常慢
我在 Intel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz 上使用 CentOS Linux 版本 7.3.1611
在我的用户空间应用程序测试期间,我注意到 clock_gettime(CLOCK_MONOTONIC, &ts) 可能需要 5-6 微秒而不是平均约 23 纳秒。它可能每 10000 个后续调用仅发生一次,但是它可能会发生。
如果没有 VDSO 库,可以解释。但是,每个clock_gettime都使用VDSO(我通过strace检查了它)。
无论对应的线程是否与某个 CPU 核心关联。不管这个 CPU 内核是否与操作系统隔离。这意味着测试应用程序可能会在独占 CPU 内核上运行,而无论如何可能会出现延迟!
我通过比较两个随后的 clock_gettime 调用的结果来测量延迟,例如:
任何人都可以分享一些想法,那里可能有什么问题?
c++ - 时间与“as-if”规则
关于一般的“as-if”规则有一个很大的问题,但我想知道在测量时间方面是否有任何例外。
考虑一下(取自此处稍作修改):
允许编译器应用任何产生相同结果的优化result
。这里的重点是“as-if”规则并不直接适用于测量时间。当然,在应用优化时,测量的时间不应该是恒定的。
所以我的问题是:当根据“as-if”规则允许编译器将其重新排列为以下之一时,我怎么可能用上面的代码可靠地测量时间?
甚至“更优化”:
我假设没有理智的编译器会这样做,但是究竟是什么阻止了编译器进行这种“优化”呢?
TL;博士...
- 可以观察优化代码和非优化代码之间的运行时差异
- 如果允许编译器优化影响测量时间,是什么阻止编译器根本不为计时创建任何代码?