Screen Test Pro 점수 계산 방식
이 문서는 점수의 측정·계산 방식을 설명합니다. 현재 설명하는 벤치마크 버전은 2.1.0입니다. 코드와 문서가 다르게 동작한다면 오류일 수 있으니 알려 주세요.
어떤 값을 찾는 테스트인가요?
일반적인 그래픽 벤치마크는 부하를 고정하고 FPS를 측정합니다. 여기서는 프레임 시간 기준을 고정하고 그 기준을 유지할 수 있는 가장 큰 부하를 찾습니다. 장면별 최대 안정 부하가 840,000개의 성운 입자로 측정됐다면 그 값을 점수 계산에 사용합니다.
빠른 기기에서는 고정 부하의 FPS가 화면 주사율에 막혀 여유 성능을 구분하기 어렵습니다. 부하를 늘리는 방식은 같은 장면으로 오래된 스마트폰부터 데스크톱 GPU까지 비교할 수 있는 범위를 넓혀 줍니다.
실행하는 장면
표준 프로필은 시그니처 5개와 대조 장면 1개로 구성되며 서로 다른 작업에 부하를 줍니다.
| 장면 | 부하 단위 | 주로 측정하는 작업 |
|---|---|---|
| 성운 드리프트 | GPU 입자 | 셰이더 입자 갱신과 픽셀 처리 |
| 네온 메트로폴리스 | 인스턴스 | 인스턴스 지오메트리 처리 |
| 리퀴드 크롬 | 내부 해상도 | 레이마칭과 프래그먼트 연산 |
| 별똥별 폭포 | CPU 입자 | JavaScript 물리 연산과 버퍼 전송 |
| 하이퍼노바 | 폭발 입자 | 여러 종류의 그래픽 부하 |
| Canvas 2D 기본 원 | 2D 원 | WebGL을 사용하지 않는 대조 작업 |
픽셀 비율은 최대 1.5×로 제한하며 내부 렌더링 크기에도 상한을 둡니다. 5K 화면과 1080p 노트북이 지나치게 다른 픽셀 수를 처리하지 않도록 하기 위해서입니다. 난수 시드와 시뮬레이션 시간 간격도 고정해 같은 버전의 작업 조건을 맞춥니다.
안정성 판단 기준
FPS 표시값을 읽는 대신 브라우저 애니메이션 타이밍에서 프레임 시간을 모읍니다. 약 0.7~1.6초의 측정 구간마다 다음 두 조건을 확인합니다.
- 평균 프레임 시간 ≤ 16.67ms × 1.08
- 프레임 시간의 95백분위 ≤ 16.67ms × 1.28
p95는 느린 프레임을 평균 속에 숨기지 않기 위한 기준입니다. 100개가 빠르고 6개가 크게 느린 경우 평균만 보면 차이가 작아도 사용자는 끊김을 느낄 수 있습니다. p95 역시 모든 순간적인 지연을 설명하는 것은 아니므로 평균과 함께 봅니다.
16.67ms 기준은 화면 주사율과 무관하게 고정합니다. 120Hz 화면이 가벼운 작업에서 8.3ms 간격으로 프레임을 보여 주더라도 통과 기준은 초당 60회에 해당하는 시간 예산입니다. 고주사율이라는 이유로 두 배 엄격한 조건을 적용하지 않습니다.
부하 탐색 과정
각 장면은 상태 머신 preflight → baseline → warmup → ramp → bracket → confirm → anchor를 따라 진행합니다.
- Baseline: 가벼운 기준 부하를 측정해 시작 시점의 상태를 기록합니다.
- Ramp: 측정 구간을 통과할 때마다 부하를 약 1.5배 늘리다가 첫 실패를 찾습니다.
- Bracket: 마지막 통과와 첫 실패 사이를 이진 탐색해 범위를 약 6%까지 좁힙니다.
- Confirm: 후보 부하에서 최대 4개의 구간 안에 3회 연속 통과해야 합니다. 초반의 한 번 실패는 회복할 수 있지만 2회 연속 실패하거나 기회가 끝나면 부하를 낮춥니다.
- Anchor: 처음의 기준 부하를 다시 실행합니다. 시작보다 15% 넘게 느려졌다면 성능 변동으로 표시합니다. 발열에 따른 제한이 한 원인일 수 있지만 다른 시스템 부하도 영향을 줄 수 있습니다.
장면당 상한은 30초이며 전체 제한은 프로필의 장면 수에 따라 계산합니다. 표준 6개 장면은 약 197초로, 대략 200초 안에 종료하도록 설계했습니다. 배경 탭으로 전환하면 현재 구간을 무효화하고 일시 정지합니다. 크기가 바뀌면 장면을 재구성하고 다시 준비합니다. 예외나 응답 지연에도 종료 경로를 둡니다.
부하를 점수로 바꾸기
기록된 결과에 고정된 계산식을 적용합니다. 동일한 기록으로 계산하면 같은 점수가 나옵니다.
- 각 장면의 최대 안정 부하를 그 장면의 기준 부하로 나눕니다. 기준은 버전별 고정 상수이며 대략 2025년의 준수한 데스크톱을 1.0 부근에 두도록 정했습니다.
- 비율을 [0.05, 20] 안으로 제한합니다. 일부 장면의 실패가 전체 점수를 바로 0으로 만들지 않도록 합니다.
- 제한한 비율의 가중 기하 평균을 계산합니다. 시그니처 장면이 대부분의 가중치를 차지하고 Canvas 2D 대조 장면은 10%입니다. 한 장면만 높고 다른 장면이 낮은 결과와 고르게 높은 결과를 구분합니다.
- 1000을 곱한 뒤 성능 저하가 감지된 장면당 3%, 전체 최대 10%의 안정성 감점을 적용하고 반올림합니다. 모든 장면에서 유효한 측정값을 얻지 못했다면 점수는 0입니다.
등급은 점수 구간의 이름입니다. 보급형은 1000 미만, 균형형은 10002999, 고성능은 30008999, 최상급은 9000 이상입니다. 기준 점수 1000에 대해 1×, 3×, 9×에서 경계가 바뀝니다. 실제 판단에는 등급 이름보다 장면별 부하와 결과 상태가 더 도움이 됩니다.
비교할 때 지켜야 할 조건
- 버전이 다르면 비교하지 않습니다. 셰이더나 작업량이 바뀌면 같은 점수라도 의미가 달라집니다.
- 호환 모드는 WebGL2 없이 클래식 장면만 실행하며 별도의 기준으로 채점합니다. 표준 점수와 섞지 않습니다.
- 일부 측정 이상 결과는 표시를 유지합니다. 익명 샘플에도 상태가 포함되며 공개 중앙값에서 제외할 수 있습니다.
반복 실행의 편차
전원을 연결하고 다른 작업을 줄여도 점수는 조금씩 달라질 수 있습니다. 배터리, 절전 모드, 뜨거운 기기는 편차를 키울 수 있습니다. 한 번의 작은 차이보다 비슷한 조건에서 여러 번 실행한 결과를 보세요. 점수의 활용 범위는 브라우저 벤치마크의 한계에서 설명합니다.