使用Javascript捕获反应时间,准确性问题

Rub*_*ben 5 javascript time

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

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

我阅读了John Resig关于该主题的帖子,根据这一点,除了Firefox和Chrome之外,我们必须禁止Windows上的所有浏览器.

此外,这个答案建议使用console.time();FF和Chrome作为最佳实践.

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

以下类似的问题只是要求"最好的网络语言",并且只接受了使用JS的一揽子建议(这是几个已发表的研究所做的,但他们没有公布技术细节).

  1. 我们能以某种方式使用更好的准确度console.time()吗?我想不是,因为它只返回到控制台,即它无法在变量中捕获.
  2. 过去4年中,计时准确度是否有任何重大变化?我很自在地禁止使用IE浏览器有很多原因,但是在Windows上Safari和Opera可能会有所改变吗?
  3. 我是否应该使用与执行过程相关的第二种方法来进行另一组比较/交叉验证?

Aln*_*tak 4

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

您可以使用performance.now()(或performance.webkitNow(),取决于浏览器版本)来获取比 更准确的时间戳Date.now()浏览此处获取更多信息。

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

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

您还应该考虑键盘扫描间隔等因素造成的影响。在一个项目中,研究人员发现了围绕大约 30 毫秒倍数(根据记忆,这是 20 年前)的时间段的显着分组,这似乎是由于 Psion PDA 上扫描键盘以查找按键的频率所致。用于测试。

在这种情况下,我通过使用 PIC 微控制器构建一个硬件“按钮盒”来解决这个问题,该微控制器可以以 9600 bps 的速度发送串行字节,没有扫描延迟,并且将按键从按钮盒发送到 PDA 的时间小于 2 毫秒。

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