javascript - 使用 Javascript 捕获 react 时间,准确性问题

标签 javascript time

我正在构建一个点探测任务(人们必须在图像消失后对一个点做出快速 react ),我们需要测量 react 时间并显示预定义时间间隔内的刺激,以便在在线治疗研究中使用。

我们已经决定使用 Javascript,我们愿意对用户施加一些限制,即排除 IE 等。不过我们不能完全禁止 Windows。

我读了John Resig's post关于这个话题,根据这个,我们将不得不禁止 Windows 上的所有浏览器,除了 Firefox 和 Chrome。

另外this answer建议使用 console.time(); 作为 FF 和 Chrome 的最佳实践。

我有一些后续问题,考虑到 Resig 的帖子现在已有 4 年历史,并且上面的问题是关于测量函数执行时间的(这意味着代码的执行偏移计时器是好的,而不是像我们的例子那样糟糕) 而不是 react 时间研究。

The following similar question只是询问“最好的网络语言”,只收到了使用 JS 的一揽子建议(这是一些已发表的研究所做的,但他们没有公布技术细节)。

  1. 我们能否以某种方式使用更准确的 console.time()(如果可用)?我认为不是,因为它只返回到控制台,即它不能在变量中捕获。
  2. 在过去 4 年中计时精度是否有任何重大变化?出于多种原因,我很乐意禁止 IE,但也许 Windows 上的 Safari 和 Opera 的情况发生了变化?
  3. 我应该使用第二种方法吗 ties into the execution process获取另一组时间进行比较/交叉验证?

最佳答案

ObDisclaimer - 我曾经为大学研究部门编写这样的软件。

您可以使用 performance.now()(或 performance.webkitNow(),取决于浏览器版本)来获得比 Date 更准确的时间戳。现在()See here for more information.

但是,需要考虑的一个问题是屏幕刷新。假设刷新率为 60 Hz,图像实际出现在屏幕上的时间可能会有 16 毫秒的差异,具体取决于:

  1. 软件是否与屏幕刷新率同步(在 JS、AFAIK 中不可能),以及
  2. 图像和点探针相对于屏幕顶部的位置 - 在屏幕顶部绘制的像素先于它们下方的像素绘制。

您还应该考虑由键盘扫描间隔等因素引起的影响。在一个项目中,研究人员发现围绕(根据内存,这是 20 年前)大约 30 毫秒的倍数的周期进行重要分组,这似乎是由于扫描键盘以查找 Psion PDA 上按键的频率用于测试。

在这种情况下,我通过使用 PIC 微 Controller 构建硬件“按钮盒”来解决问题,该微 Controller 可以 9600 bps 的速度发送串行字节,没有扫描延迟,并且 <2ms 可以将按键从盒子发送到 PDA .

我正在考虑写一篇关于屏幕刷新问题的论文。然后我找到了一份真正的工作 ;-) 我不知道是否还有其他人研究过它。

关于javascript - 使用 Javascript 捕获 react 时间,准确性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13973321/

相关文章:

javascript - 如何在 v-for 上绑定(bind)动态方法

javascript - 未将日期时间值设置为 Bootstrap DatetimePicker

php - 小数分钟

PHP:如何检查日期是今天、昨天还是明天

java - 时间 毫秒 到 hh :mm:ss format in java

MySQL比较不同格式的时间

javascript - 如何在 django 模板标签中传递 Javascript 变量

java - Android 上的 Phonegap : Why does triggering the backbutton cause a SocketException?

javascript - 无法从 laravel 中的 javascript 调用 Controller 内的函数

android - 如何从 Android GPS 位置获取准确的时间戳