Screen Test Pro

同じMac、5つのブラウザ、5つのスコア

著者 Screen Test Pro公開日

M4 Max を搭載した Mac Studio が、Apple Store で私たちのベンチマークを走らせて 10,630 を出しました。比較に使った MacBook Pro(より古い世代の M2 Max)は、自宅でおよそ 12,900 を出していました。新しくて大きいチップが 18% 負けたのです。すぐに思いつく容疑者(RAM 36 GB 対 96 GB、使われていない展示機対働き続けている開発マシン)では、どれも説明がつきません。

そこで1台のマシン、つまりあの M2 Max を、同じディスプレイ、同じ午後のうちに5つのブラウザで走らせました。

Safari 26 Edge 152 Opera 131 Firefox 156 Chrome 151
スコア 11,443 11,713 12,801 6,275 ~12,900

同じシリコン、同じ画面なのに、最高と最低で2倍の差があります。シーンごとの数値は合計よりさらに奇妙です。レイマーチングのシーン「リキッドクローム」は、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 が4〜10倍も悪い結果を出したのです。そのシェーダーには 180 回反復するループがあり、新しい世代の GPU と Metal コンパイラーの何らかの組み合わせがそこでつまずき、古い世代はつまずきませんでした。あのシーンはもうフラグメント処理能力を測っていませんでした。測っていたのはコンパイラーの運です。

ブラウザベンチマークが正直に測れるもの

このサイトが出す数値は、チップの格付けではありません。あなたが実際に使っているスタック全体、つまりシリコン、ドライバー、シェーダーコンパイラー、JavaScript エンジン、canvas のラスタライザー、コンポジターをまとめて測ったものです。それは欠点ではなく特徴です。ページを開いたときに得られる性能そのものだからです。ただし、比較するときには2つのルールが大切になります。

比べるのは同じブラウザの中だけにしてください。 Safari のスコアと Chrome のスコアは、たまたま同じチップを共有する2つの異なるスタックの測定値です。上位スコアのランキングは以前から各行にブラウザを表示しています。これからは結果シートも、十分なサンプルがそろえば、同じハードウェアのブラウザ別の中央値を表示します。

ベンチマークはスタックの癖を増幅すべきではありません。 スタックが測定の一部であることは正直なことです。けれども、コンパイラーがループの形を嫌うというだけで1つのシーンが10分の1に崩れるのは、そうではありません。それはベンチマークがもろいということであり、直すのは私たちの仕事です。

ベンチマーク 2.3.0 で変わったこと

レイマーチャーは小さなパスに分けて描くようになりました。 180 サンプルまでループする1つのシェーダーの代わりに、リキッドクロームは4サンプルずつのパスを繰り返し積み重ねます。サンプル位置も総仕事量も同じで、計算は最後の桁まで変わりません。4回反復のループは、どのエンジンもうまくコンパイルできる種類のシェーダーです。それで最新の Apple GPU がフラグメント処理能力の傾向どおりに戻るかどうかは、次の店頭訪問で分かります。Firefox は変わりませんでした。新しいシェーダーでも 5,622 のままです。コストがループではなく、一つひとつのサンプルが行う処理にあるからで、そこを直せばワークロード自体が変わってしまいます。

持続予算は、どのディスプレイでもひとつに。 実際の垂直同期タイムスタンプは、2.2.0 で採用した整ったモデルより乱雑でした。しかも固定リフレッシュのディスプレイにつながったマシンは、可変リフレッシュのノートより約9%ゆるいフレームあたりの持続予算を、気づかれないまま認められていました。いまは全員が同じ 17.5 ms のトリム平均で判定されます。

コールドスタートがでたらめな数値を出さなくなりました。 起動したばかりのブラウザでの最初の測定は、以前はひどいものでした。店頭のデモ用 Mac は 77 を出し、数分後には 8,553。私たち自身も、自宅の Safari での最初の数回は 304 と 1,149 で、そのあと 11,443 が出ました。修正は3つです。3分間を費やす前にマシンが忙しいかどうかを確認すること、シーンごとに初回訪問時のシェーダーコンパイルによるカクつきが収まるのを待つこと、そしてマシンが落ち着いていれば、何も測定できなかったシーンに実行の最後でもう1回だけ機会を与えることです。何もでっち上げてはいません。再試行は2回目の測定にすぎません。

印が本当のことを言うようになりました。 全シーンで測定できたのに、ある段階を3ウィンドウ連続で確認できなかった測定は、以前は下限扱いでランキングから完全に外されていました。本番のデータでは、こうした段階は安定したデバイスの測定値より約13% 低く出ています。苦戦しているハードウェアが正直に出した数値であって、細工された数値ではありません。そこで、こうした測定は印付きで公開されるようになり、各シーンの印は3つのうち何が起きたのかを正確に伝えます。

結果を持ち運べるようになりました。 「リンクをコピー」は、スコア、シーンごとの負荷、フレーム時間、印を含む結果全体をリンクそのものに詰め込みます。何もアップロードしません。どこで開いても閲覧専用で表示されます。自分のものではないコンピューターでベンチマークを取るとき、もう画面を写真に撮る必要はありません。分かっています。私たちもたくさん画面を撮りました。

2.3.0 のスコアは古いバージョンと混ざらないので、ランキングはゼロから始まります。フレーム時間のウィンドウ、負荷の段階、測定を無効にしうる条件まで、測定の仕組みの詳しい説明は方法論のページにすべて書いてあります。あるいは、そのままテストを走らせてみてください。所要時間は約3分で、いまはマシンの調子が悪そうなら最初に教えてくれます。

このページを共有
コメントコメント欄は言語ごとに分かれ、サイト全体で共通です。投稿には Google でのログインが必要です。
コメント