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

are reaction time tests accurate
反應時間測試準嗎?你的分數包含什麼

「準確度」對瀏覽器反應時間測試而言意謂著什麼

對反應測試來說,「準確度」有兩種不同的意涵。第一是「可重現性」:若情境重現,分數是否也跟著重現?大多數架構良好的瀏覽器工具都能達到這個門檻。第二是「隔離性」:分數是否僅反映人體反應時間,而不含其他東西?任何通用的瀏覽器工具都無法保證這一點,因為 JavaScript 無法觀察到手指移動、開關閉合、無線封包離開裝置、或顯示像素發出綠光的物理瞬間。

因此,對「反應時間測試準嗎」這個問題的誠實答案,取決於你指的是哪一種意涵。它們在計算瀏覽器到事件的時間間隔時是準確的。但若把它們當作校正過的硬體延遲計、醫療儀器或運動計時門的替代品,就不準確。Reaction Time Test 對此相當明確:它計算頁面就緒狀態回呼,對上瀏覽器所傳遞的指標或鍵盤事件,並揭露顯示器、瀏覽器、作業系統及輸入裝置的延遲都可能對同一個顯示數字造成貢獻。

毫秒數字實際上包含了什麼

在一次試驗中,分數是兩次 performance.now 讀數之間的差值,再四捨五入。在你的決定與那個數字之間,數個獨立層級都可能各自增加或減少毫秒:

  • 顯示器更新頻率 — 面板可能要等到下一幀才繪製為綠色,因此可見的提示可能比就緒回呼慢。
  • 合成器與瀏覽器排程 — 改變面板的工作與註冊按鍵的工作,會在同一個任務佇列上執行。
  • 作業系統的輸入處理 — 作業系統擷取事件,並將之交給處於焦點的處理程序。
  • 輸入裝置的傳輸 — 有線與無線路徑以不同的速度傳遞按鍵,而無線狀況每次試驗都可能不同。
  • 事件分派 — 瀏覽器將按鍵路由到頁面的監聽器。

這些層級都不在測試的控制之下,且沒有任何一層在不同機器之間是固定的。這就是為何同一個人所擁有的兩台裝置,在同一個早晨可能產生不同的「反應時間」,也為何這個頁面並未宣稱那些路徑在物理上是等價的。

每次都以同樣的方式執行 Reaction Time Test

若要讓逐次執行的比較具有意義,工作流程必須保持固定。Reaction Time Test 設計用於在單一裝置條件下進行短而可重複的測試。

  1. 選擇 Start test,保持面板可見,在它顯示等待訊息時不要按下任何鍵。
  2. 一旦面板變綠並顯示 PRESS NOW,立即按下面板、EnterSpace
  3. 在相同的裝置條件下重複,以比較最近五次、最佳值與平均值;當你想要重新開始時,按 Reset all

這個頁面在每次試驗使用一個介於 1,500 到 4,000 毫秒之間的全新隨機等待時間。這個會變動的延遲使得使用者難以從固定節奏去預測訊號。若你在面板變綠之前按下,該次待執行試驗會被取消,面板會顯示 Too soon,並且不會新增任何結果 — 但先前已完成的紀錄會保留在畫面上,你不會因為一次假啟動而失去良好資料。

為何同一個人會得到不同的數字

即使在同一台裝置上,重複試驗也不會收斂到單一數值。這個散布大部分來自上述層級的真實雜訊,加上人體注意力的正常變動。少數條件對結果的影響比其他條件更大:

條件作用影響方向
背景分頁瀏覽器會節流計時器並降低幀率提高分數
省電模式降低 CPU 與顯示器更新頻率提高分數
CPU 高負載延遲就緒回呼與事件分派提高分數
遠端桌面在你與瀏覽器之間加上網路與編碼延遲大幅提高分數
無線輸入加上會變動的傳輸延遲提高變異程度大於平均值
可變更新率的顯示器綠色繪製時間逐幀漂移提高變異
焦點在前景的分頁計時器以正常速率執行分數較低且更穩定

這裡的定性結論才是重點:在決定某一次試驗是你的「真實」分數之前,盡可能讓這些條件保持固定。

比較失去意義的時機

把前景本機瀏覽器與串流或遠端工作階段拿來比較,是最明顯的同一個人卻得到兩個無關數字的案例。端到端的系統延遲已不再是同一台機器,因此測試也不再測量同一個區間。當你更換輸入裝置、把視窗在不同更新率的顯示器之間搬移,或更換瀏覽器時,情況也是如此。這個頁面在取得焦點時接受指標按下以及 Enter 或 Space 鍵,因此工作流程可以比較不同瀏覽器所傳遞的輸入路徑 — 但它並未宣稱這些路徑在物理上是等價的。

若要進行實務上的比較,請使用相同的裝置、輸入方式、瀏覽器、視窗位置與顯示模式。完成數次試驗,而不是把單一離群值當成結論。若你想比較滑鼠與鍵盤的反應,請在各組之間重置,並在頁面之外標註條件,因為這個小工具刻意不儲存任何實驗註記。

這個工具刻意不做的事

Reaction Time Test 並不套用年齡百分位排名、通過或不通過的標籤、運動基準或醫療閾值,也不對警覺度做出任何宣稱。這些詮釋需要受控制的實驗流程與適當專業知識,而這是通用瀏覽器工具所無法提供的。它也不測試聽力、診斷神經狀況、評估駕駛能力、推薦訓練,或認證競技表現。JavaScript 無法把人體反應從顯示器延遲、裝置傳輸或開關行為中隔離出來,而這個頁面對此限制說得很明確。若安全、健康、就業、無障礙或採購決策取決於反應測量,則需要使用適當的受控儀器與合格的專業指引。

讓分數更有用

這個頁面保留最近五次已完成的試驗,並為這個短暫的本機工作階段計算最佳值與四捨五入後的平均值。最佳值是五次保留試驗中的最小值;平均值是它們的算術平均數,四捨五入到最接近的毫秒。較舊的結果在第五次完成試驗後就會掉出, 因此摘要僅描述近期可見的範圍。所有計時狀態都只保留在目前的分頁中 — 沒有登入、沒有上傳、沒有排行榜,重新載入後也沒有歷史紀錄。

使用五次已完成試驗的計算範例:234、251、248、240 與 267 ms。最佳值是最小值 234 ms。總和為 234 + 251 + 248 + 240 + 267 = 1,240 ms。除以 5 次試驗,得到平均值 248 ms,然後頁面會將其四捨五入到最接近的整數毫秒。

在每次工作階段中,以相同的方式使用這個小範圍:保持瀏覽器在前景、保持相同的輸入方式,並在條件改變時於各組之間重置。把這個數字視為對你的系統加上注意力的測量,而不是對你反射的單獨判決;如此你將能對反應時間測試實際上測量到什麼,得到一個公平的解讀。