GUIDE 05
폴링레이트와 측정 한계 — CPS 기록은 얼마나 정확한가
마우스 폴링레이트, 브라우저 이벤트 시각, 키 반복, 모니터 주사율이 CPS 측정에 주는 영향과 한계를 설명합니다.
웹에서 재는 CPS는 「손가락이 버튼을 누른 순간」이 아니라 「브라우저가 입력 이벤트를 받은 순간」을 기준으로 합니다. 그 사이에는 여러 단계가 있고, 단계마다 작은 오차가 생깁니다. 무엇이 영향을 주고 무엇은 주지 않는지 정리했습니다.
입력이 화면까지 가는 길
- 스위치가 눌리고 마우스 펌웨어가 디바운스를 거쳐 눌림을 확정합니다.
- 마우스는 정해진 주기마다 컴퓨터에 상태를 보고합니다(폴링).
- 운영체제가 입력을 받아 브라우저에 넘깁니다.
- 브라우저가 이벤트를 만들고 시각을 붙여 페이지의 스크립트에 전달합니다.
폴링레이트
폴링레이트는 마우스가 1초에 몇 번 상태를 보고하는지입니다. 보고 간격은 1000 ÷ 폴링레이트(ms)입니다.
| 폴링레이트 | 보고 간격 |
|---|---|
| 125 Hz | 8 ms |
| 500 Hz | 2 ms |
| 1000 Hz | 1 ms |
클릭 수 자체에는 거의 영향이 없습니다. 초당 20번 클릭해도 클릭 사이 간격은 50 ms로, 125 Hz의 보고 간격보다 훨씬 깁니다. 다만 각 클릭의 시각이 보고 간격 단위로 늦어질 수 있어 간격 분포는 몇 ms씩 뭉개질 수 있습니다.
브라우저의 시각 정밀도
CPS 미터는 이벤트에 붙은 시각(event.timeStamp)과 performance.now()를 씁니다. 브라우저는 보안상 이 시각의 정밀도를 일부러 낮추기도 하므로, 간격을 소수점 아래까지 믿기보다는 수 ms 단위로 읽는 것이 맞습니다. 페이지가 무거운 작업 중이라도 이벤트 시각은 입력이 들어온 때를 기준으로 하므로 셈이 빠지지는 않습니다.
모니터 주사율은 상관없다
60 Hz든 240 Hz든 화면 주사율은 숫자가 표시되는 속도만 바꿉니다. 입력 셈은 화면 갱신과 따로 이루어지므로 주사율 때문에 기록이 달라지지 않습니다.
무선·블루투스
무선 연결은 보고가 가끔 몰려서 도착하거나 지연될 수 있습니다. 클릭 수는 대개 그대로지만 간격 분포가 넓어질 수 있습니다. 정밀하게 비교하려면 같은 연결 방식끼리 비교하세요.
키 반복
키보드 키를 누르고 있으면 운영체제가 일정 간격으로 입력을 반복해서 만듭니다. CPS 미터는 이벤트의 반복 표시(KeyboardEvent.repeat)를 확인하고, 추가로 키를 뗀 기록이 없으면 새 입력으로 세지 않습니다. 그래서 누르고 있기만 해서는 기록이 오르지 않습니다.
시작과 끝의 처리
- 시작: 첫 입력이 타이머를 시작하므로 반응 시간은 빠집니다.
- 끝: 정확히 지정 시간이 지난 뒤의 입력은 버립니다. 화면에 「측정 끝」이 늦게 뜨더라도 셈은 이벤트 시각 기준입니다.
- 이탈: 측정 중에 다른 탭으로 가면 브라우저가 타이머를 늦출 수 있어 측정을 취소합니다.
결론
여러 번 재서 경향을 보는 용도라면 웹 측정으로 충분합니다. 0.1 CPS 안팎의 차이는 장비와 연결 상태에서도 생길 수 있으니 같은 조건에서 여러 번 비교하세요.