我正在构建一个点探测任务(人们必须在图像消失后对一个点做出快速 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 的一揽子建议(这是一些已发表的研究所做的,但他们没有公布技术细节)。
- 我们能否以某种方式使用更准确的
console.time()
(如果可用)?我认为不是,因为它只返回到控制台,即它不能在变量中捕获。 - 在过去 4 年中计时精度是否有任何重大变化?出于多种原因,我很乐意禁止 IE,但也许 Windows 上的 Safari 和 Opera 的情况发生了变化?
- 我应该使用第二种方法吗 ties into the execution process获取另一组时间进行比较/交叉验证?
最佳答案
ObDisclaimer - 我曾经为大学研究部门编写这样的软件。
您可以使用 performance.now()
(或 performance.webkitNow()
,取决于浏览器版本)来获得比 Date 更准确的时间戳。现在()
。 See here for more information.
但是,需要考虑的一个问题是屏幕刷新。假设刷新率为 60 Hz,图像实际出现在屏幕上的时间可能会有 16 毫秒的差异,具体取决于:
- 软件是否与屏幕刷新率同步(在 JS、AFAIK 中不可能),以及
- 图像和点探针相对于屏幕顶部的位置 - 在屏幕顶部绘制的像素先于它们下方的像素绘制。
您还应该考虑由键盘扫描间隔等因素引起的影响。在一个项目中,研究人员发现围绕(根据内存,这是 20 年前)大约 30 毫秒的倍数的周期进行重要分组,这似乎是由于扫描键盘以查找 Psion PDA 上按键的频率用于测试。
在这种情况下,我通过使用 PIC 微 Controller 构建硬件“按钮盒”来解决问题,该微 Controller 可以 9600 bps 的速度发送串行字节,没有扫描延迟,并且 <2ms 可以将按键从盒子发送到 PDA .
我正在考虑写一篇关于屏幕刷新问题的论文。然后我找到了一份真正的工作 ;-) 我不知道是否还有其他人研究过它。
关于javascript - 使用 Javascript 捕获 react 时间,准确性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13973321/