같은 Mac, 브라우저 다섯 개, 점수 다섯 개
M4 Max를 탑재한 Mac Studio가 Apple Store에서 우리 벤치마크로 10,630점을 받았습니다. 비교 대상이었던 MacBook Pro(더 오래된 M2 Max)는 집에서 약 12,900점을 받았었습니다. 더 새롭고 더 큰 칩이 18% 차이로 진 셈인데, 눈에 띄는 용의자들(RAM 36GB 대 96GB, 놀고 있는 전시용 기기 대 한창 일하는 개발용 기기)로는 그 어느 것도 설명되지 않습니다.
그래서 기기 한 대, 즉 바로 그 M2 Max를 같은 디스플레이로, 같은 오후에 브라우저 다섯 개로 돌려 보았습니다.
| Safari 26 | Edge 152 | Opera 131 | Firefox 156 | Chrome 151 | |
|---|---|---|---|---|---|
| 점수 | 11,443 | 11,713 | 12,801 | 6,275 | ~12,900 |
같은 실리콘, 같은 화면인데 최고와 최저 사이에 두 배 차이가 납니다. 장면별 숫자는 총점보다 더 이상합니다. 레이마칭 장면인 리퀴드 크롬은 Safari에서 25,523 단위를 유지했지만 Firefox에서는 5,622였습니다. 같은 GPU에서요. Canvas 2D 원: Opera 64,476, Firefox 9,960. CPU 물리 장면은 Safari에서 어떤 Chromium 브라우저보다 29% 빨랐습니다. JavaScriptCore가 V8보다 그 코드와 궁합이 좋기 때문입니다.
그리고 매장 결과는 옷만 갈아입은 같은 이야기였습니다. Safari에서 M2 Max는 레이마처 장면에서 25,523 단위를 유지했지만, 매장의 M4 Max는 6,222, M5 Pro는 2,628이었습니다. 같은 브라우저, 같은 장면인데 더 새롭고 빠른 GPU가 네 배에서 열 배나 나쁜 결과를 냈습니다. 그 셰이더에는 180번 반복하는 루프가 있었고, 새 세대 GPU와 Metal 컴파일러의 어떤 조합이 거기서 걸려 넘어졌지만 이전 세대는 그렇지 않았습니다. 그 장면은 더 이상 프래그먼트 처리량을 측정하고 있지 않았습니다. 컴파일러 운을 측정하고 있었습니다.
브라우저 벤치마크가 정직하게 측정하는 것
이 사이트가 내놓는 숫자는 칩 등급이 아닙니다. 실제로 사용하는 스택 전체, 즉 실리콘, 드라이버, 셰이더 컴파일러, JavaScript 엔진, canvas 래스터라이저, 컴포지터를 측정한 값입니다. 이건 결함이 아니라 특징입니다. 페이지를 열 때 얻는 성능이 바로 이것이니까요. 다만 비교할 때는 두 가지 규칙이 중요합니다.
같은 브라우저 안에서만 비교하세요. Safari 점수와 Chrome 점수는 우연히 같은 칩을 쓰는 서로 다른 두 스택을 측정한 값입니다. 상위 점수 순위표는 이미 한동안 모든 행에 브라우저를 표시해 왔습니다. 이제 결과지도 샘플이 충분하면 같은 하드웨어의 브라우저별 중앙값을 보여 줍니다.
벤치마크가 스택의 버릇을 증폭해서는 안 됩니다. 스택이 측정의 일부라는 것은 정직한 일입니다. 하지만 컴파일러가 루프 모양을 싫어한다는 이유로 한 장면이 10배나 무너지는 것은 그렇지 않습니다. 그건 벤치마크가 허술하다는 뜻이고, 고치는 건 우리 몫입니다.
벤치마크 2.3.0에서 바뀐 점
레이마처가 이제 작은 패스로 나눠 그립니다. 180샘플까지 도는 셰이더 하나 대신, 리퀴드 크롬은 네 샘플짜리 패스를 반복해 쌓습니다. 샘플 위치도, 전체 작업량도 같고, 계산은 마지막 자릿수까지 그대로입니다. 네 번 반복하는 루프는 어느 엔진이나 잘 컴파일하는 종류의 셰이더입니다. 이것으로 최신 Apple GPU가 프래그먼트 처리량 추세로 돌아올지는 다음 매장 방문에서 확인할 수 있습니다. Firefox는 꿈쩍하지 않았습니다. 새 셰이더에서도 5,622입니다. 비용이 바깥 루프가 아니라 샘플 하나하나가 하는 작업에 있기 때문이고, 그걸 고치면 작업 부하 자체가 바뀝니다.
모든 화면에 지속 예산은 하나. 실제 수직동기 타임스탬프는 우리가 2.2.0에 넣은 깔끔한 모델보다 훨씬 지저분했고, 고정 주사율 화면에 연결된 기기는 가변 주사율 노트북보다 약 9% 느슨한 프레임당 지속 예산을 조용히 받고 있었습니다. 이제 모두가 같은 17.5 ms 절사 평균으로 판정됩니다.
콜드 스타트가 더는 엉터리 숫자를 내지 않습니다. 막 연 브라우저에서의 첫 실행은 예전엔 가혹했습니다. 매장의 데모용 Mac은 77을 기록했다가 몇 분 뒤 8,553을 냈고, 우리가 집에서 처음 돌린 Safari 실행도 304와 1,149가 나온 뒤에야 11,443이 나왔습니다. 고친 점은 세 가지입니다. 벤치마크는 이제 3분을 쓰기 전에 기기가 바쁜지 확인하고, 장면마다 첫 방문 시 셰이더 컴파일로 생기는 버벅임이 지나가기를 기다리며, 기기가 조용해졌다면 아무것도 측정하지 못한 장면에 실행 끝에서 한 번 더 기회를 줍니다. 지어내는 것은 없습니다. 재시도는 그저 두 번째 측정일 뿐입니다.
이제 표시가 사실을 말합니다. 모든 장면을 측정했지만 한 단계를 세 창 연속으로 확인하지 못한 실행은, 예전에는 하한으로 처리되어 순위표에서 완전히 빠졌습니다. 실제 운영 데이터를 보면 이런 단계는 안정적인 기기가 측정한 값보다 약 13% 낮게 나옵니다. 힘겹게 버틴 하드웨어가 정직하게 낸 숫자이지, 조작된 숫자가 아닙니다. 그래서 이제는 표시와 함께 공개되고, 장면마다 붙는 표시는 세 가지 중 정확히 무엇이 일어났는지 알려 줍니다.
그리고 결과를 들고 다닐 수 있습니다. “링크 복사”는 이제 점수, 장면별 부하, 프레임 시간, 표시까지 결과 전체를 링크 자체에 담습니다. 아무것도 업로드하지 않으며, 어디서 열든 읽기 전용으로 표시됩니다. 내 것이 아닌 컴퓨터를 벤치마크할 일이 생겨도 이제 화면을 사진으로 찍을 필요가 없습니다. 압니다. 우리도 화면을 참 많이 찍었습니다.
2.3.0 점수는 이전 버전과 절대 섞이지 않으므로 순위표는 처음부터 다시 시작합니다. 측정이 어떻게 이뤄지는지 긴 설명이 필요하다면 프레임 시간 창, 부하 사다리, 실행을 무효로 만들 수 있는 조건까지 방법론 페이지에 모두 있습니다. 아니면 그냥 테스트를 실행해 보세요. 3분 정도 걸리고, 이제는 기기 상태가 좋지 않으면 시작 전에 알려 줍니다.