1. lab.jsのパフォーマンス

呈示時間の精度,反応時間計測の精度について知りたい場合には公式の以下のページを見てください。また,小林回のページでも説明がされていますので参考にしてください。

lab.js · Performance

lab.jsの刺激呈示と応答時間は,ブラウザベースのプログラムとしては非常に正確で高い精度であると主張されています(Henninger et al., 2020)。

時間計測

時間計測に関して,ミリ秒未満の精度を提供する高精度のタイマーを採用しているそうです (Barnhoorn, et. al., 2015と同様のアルゴリズム) 。ブラウザのデフォルトのタイマーはミリ秒単位でタイムスタンプを切り捨てる設定であることから,それよりも十分に高い精度で時間計測が可能であるようです。

測定開始タイミング

lab.jsでは測定の開始がディスプレイのリフレッシュタイミングと同期するようになっています。この方法により,刺激の呈示タイミングと時間計測タイミングにズレが生じるのが抑えられているようです。

刺激描画の方法

刺激呈示の精度に関しては,刺激呈示前に事前にコンテンツをロードし,描画を行う方法(prepare- run-strategy,c.f., Mathôt et al.,2012)が採用されており,実験プログラム中の計算を可能な限り減らすようになっているそうです。また,一般的に,ブラウザでは画面中の描画範囲以外の計算(例えば,HTMLのレイアウトの計算)に負荷がかかりますが,キャンバス範囲のみをレンダリングする方法を用いることで,それ以外の計算コストを削減しています。さらに,ビルダーで「フレーム」というコンポーネントを使用することで,画面間で描画領域を共通化することが出来(変化のみをモニタリング),より描画にかかる負荷を減少させることが出来るようです。

2. 実験作成時に気をつけること

以下のホームページに,実験作成時に時間精度を高めるためのTipsが公開されています。

Optimizing for timing performance - lab.js 20.0.1 documentation

Screen Canvas コンポーネントを使うこと

Screen Canvasコンポーネントでは,ブラウザの状態維持に関する負荷を減らすことができるようです。一方,Page HTMLコンポーネントは時間精度は高くありません。時間精度を高める必要がある場合にはScreen Canvasコンポーネントを使いましょう。

Loopの上位にFrameコンポーネントを加えること