基於瀏覽器的反應時間測試只能準確測量一件事:從瀏覽器自身的視覺「開始」訊號,到瀏覽器接收到你按下按鍵的瞬間,這個間隔會以非負的整數毫秒表示。這個數字是真實且可重複的,但它並非對你神經系統的純粹測量。顯示器更新率、合成器排程、瀏覽器任務時序、作業系統的輸入處理、滑鼠或鍵盤的傳輸、無線狀態,以及事件分派,全都夾在你的手指與顯示結果之間,因此分數反映的是整個系統加上使用者本人。反應時間測試在同一個將面板翻為綠色的回呼函式中,用 performance.now 記錄訊號,接著用另一次 performance.now 讀數記錄按下動作,並將差值四捨五入。一個確定性的測試夾具證明了程式中存在精確的 234 毫秒案例,而非僅僅依賴自洽的計時代碼。因為各裝置所包含的層級不同,在某台機器上看起來偏慢、在另一台上看起來偏快的數字,反映的可能是硬體路徑而非操作者本身。

對瀏覽器反應時間測試來說,「準確」意味著什麼
對反應測試來說,「準確」有兩種不同的含義。第一種是可重複性:在相同的條件下,分數是否會重現?大多數製作良好的瀏覽器工具都能達到這個標準。第二種是隔離性:分數是否只反映人體的反應時間,而排除其他因素?任何通用的瀏覽器工具都無法保證這一點,因為 JavaScript 無法觀察手指實際移動、開關實際閉合、無線封包實際離開裝置、或顯示器像素實際發出綠光的物理瞬間。
因此,對於反應時間測試是否準確這個問題,誠實的答案取決於你指的是哪一種意義。它們在測量瀏覽器到事件的間隔方面是準確的。它們並不能作為校正過的硬體延遲測量儀、醫療儀器或運動感測閘門的替代品。反應時間測試對此說明得很清楚:它測量的是頁面的就緒狀態回呼,與瀏覽器傳遞的指標或鍵盤事件之間的時間,並揭露顯示器、瀏覽器、作業系統和輸入裝置的延遲,都可能對同一個顯示數字造成影響。
毫秒數字實際包含的內容
在單次試驗中,分數是兩次 performance.now 讀數四捨五入後的差值。從你做出決定到這個數字之間,有數個獨立的環節,各自可能增加或減少毫秒:
- 顯示器更新率 — 面板可能要等到下一幀才會繪製成綠色,因此可見的提示可能比就緒回呼慢。
- 合成器與瀏覽器排程 — 改變面板的工作與記錄按鍵的工作,都在同一個任務佇列上執行。
- 作業系統的輸入處理 — 作業系統擷取事件,並交給取得焦點的處理程序。
- 輸入裝置的傳輸 — 有線與無線路徑的按鍵傳遞速度不同,而無線狀態可能在每次執行之間有所差異。
- 事件分派 — 瀏覽器將按鍵事件路由到頁面的監聽器。
這些環節都不在測試的控制之下,也沒有任何一個在機器之間是固定的。這就是為什麼同一個人在同一天早上,在兩台裝置上可能會產生不同的「反應時間」,也說明了頁面為何不會宣稱這些路徑在物理上是等價的。
每次都以相同方式執行反應時間測試
要讓逐次執行的比較具有意義,工作流程必須保持一致。反應時間測試的設計,就是為了在一組固定的裝置條件下進行短暫、可重複的測試。
- 選擇 Start test,保持面板可見,在顯示等待訊息時不要按下。
- 當面板變綠並顯示 PRESS NOW 時,立即按下面板、Enter 鍵或 Space 鍵。
- 在相同的裝置條件下重複進行,比較最近五次、最佳與平均值,然後當你想要重新開始時,選擇 Reset all。
頁面在每次試驗中使用 1,500 到 4,000 毫秒之間的隨機新等待時間。這個變動的延遲使人更難以從固定節奏預測訊號。如果你面板還沒變綠就按下,進行中的試驗會被取消,面板會顯示 Too soon,且不會新增結果 — 但先前已完成的紀錄會保留在畫面上,你不會因為一次誤觸而失去良好的資料。
為什麼同一個人會得到不同的數字
即使在同一台裝置上,重複試驗也不會收斂到單一數值。這些分散大部分來自上述各環節的真實雜訊,加上一般人類注意力的正常變動。少數幾個條件對結果的影響特別大:
| 條件 | 作用 | 影響方向 |
|---|---|---|
| 背景分頁 | 瀏覽器會節流計時器並降低畫面更新率 | 提高分數 |
| 省電模式 | 降低 CPU 與顯示器更新率 | 提高分數 |
| 高 CPU 負載 | 延遲就緒回呼與事件分派 | 提高分數 |
| 遠端桌面 | 在你與瀏覽器之間加入網路與編碼延遲 | 大幅提高分數 |
| 無線輸入 | 加入變動的傳輸延遲 | 對變異的影響大於對平均值的影響 |
| 可變更新率的顯示器 | 綠色的繪製時間在每一幀之間漂移 | 提高變異 |
| 取得焦點的前景分頁 | 計時器以正常速率執行 | 分數較低且較穩定 |
重點的定性結論是:在你決定某一次試驗是你的「真實」分數之前,盡可能讓這些條件保持固定。
比較失效的時機
比較前景的本機瀏覽器與串流或遠端工作階段,是最明顯的情況 — 同一個人會得到兩個無關的數字。端到端的系統延遲已經不再是同一台機器,因此測試也不再測量同一個間隔。當你更換輸入裝置、將視窗在更新率不同的螢幕之間移動、或更換瀏覽器時,情況也是如此。頁面在取得焦點時接受指標按鍵與 Enter 或 Space 鍵,因此工作流程可以比較不同由瀏覽器傳遞的輸入路徑 — 但它不會宣稱這些路徑在物理上是等價的。
要做有意義的比較,請使用相同的裝置、輸入方式、瀏覽器、視窗位置與顯示模式。進行多次試驗,而不是把單一離群值當作結論。如果你想要比較滑鼠與鍵盤的反應,請在每組之間重設,並在頁面之外標註條件,因為這個小工具刻意不儲存任何實驗筆記。
這個工具刻意不作的聲明
反應時間測試不會套用年齡對照表、百分位排名、通過或不通過的標籤、運動基準或醫療閾值,也不會對警覺度作出任何宣稱。這些詮釋需要受控制的流程與相應的專業,而這是通用瀏覽器工具所無法提供的。它也不會測試聽力、診斷神經系統疾病、評估駕駛能力、推薦訓練,或認證競賽表現。JavaScript 無法將人體反應從顯示器延遲、裝置傳輸或開關行為中隔離出來,頁面對這項限制說明得很清楚。如果涉及安全、健康、就業、無障礙或採購等決策依賴於反應測量,則需要使用適當的受控儀器與合格的專業指導。
讓分數更有用
頁面保留最近五次完成的試驗,並為這個短暫的本機工作階段計算最佳值與四捨五入後的平均值。最佳值是五次保留試驗中的最小值;平均值是它們的算術平均數,四捨五入到最接近的毫秒。較舊的結果會在第五次完成試驗後被淘汰,因此摘要只描述可見的近期視窗。所有計時狀態都保留在目前分頁中 — 沒有登入、沒有上傳、沒有排行榜,重新載入後也不會留下紀錄。
使用五次完成試驗的計算範例:234、251、248、240 與 267 毫秒。最佳值是最小值 234 毫秒。總和為 234 + 251 + 248 + 240 + 267 = 1,240 毫秒。除以 5 次試驗,得到平均值 248 毫秒,頁面再將其四捨五入到最接近的整數毫秒。
在各次工作階段中,以相同方式使用這個小視窗:讓瀏覽器保持在前台、維持相同的輸入方式,並在條件改變時在每組之間重設。將這個數字視為對你的系統加上注意力的測量,而不是對你反射的獨立判決,你就能對反應時間測試實際測量的內容,得到一個公平的認識。
若想深入了解,請參閱音訊反應時間測試的準確性:一項視覺現實檢驗。
若想深入了解,請參閱人類何時開始追蹤時間:從日晷到現在。