-
Notifications
You must be signed in to change notification settings - Fork 2
Benchmark
short url: http://urls.jp/gembench
パソコンやスマホ向けに作られていて組込機器の動作環境として適切ではないものが多いが、高速化の検証用に使えるベンチマークと実行結果のメモです。スコアとして比較したい場合、何を比較しているのか、影響する設定・解像度などの影響によく注意してください。
-
Gecko の内部設定
- 重たいコードを実行すると 応答のないスクリプトの警告 が出るので
dom.max_script_run_time
(デフォルト 10 秒) を十分長くまたは 0 に設定 - IonMonkey, Stylo, WebRender などの有効無効設定に注意
- 重たいコードを実行すると 応答のないスクリプトの警告 が出るので
JavaScript 単体の速度はそんなに重要じゃないと思うが一応。
Apple がメンテしていた古典的な JavaScript ベンチマーク。単に古くて今時の JavaScript の使い方と異なるだけでなく、IE を代表として一部ブラウザのベンチマーク最適化の対象となった経緯があるため知名度は高いが結果は参考程度。結果の内訳まで保存したい場合は実行後の URL を記録する。
Board | Browser | Result | Note |
---|---|---|---|
Dragon Board 410c | Firefox 45 | 1336.9ms | aarch32 |
Dragon Board 410c | Firefox 38 | 1239.0ms | Android default |
Dragon Board 410c | Chromium 56 | 1716.1ms | Android (aarch64) |
Rock Pi 4B | Firefox 60 | 1588.7ms | Debian (aarch64) |
SABRE | Firefox 45 | 1873.9ms | |
SABRE | Chromium 40 | 2424.9ms | |
iWave RZ/G1M | Firefox 52 | 11754.5ms | 201711 build, BSP2.0, Baseline JIT 無効化 |
iWave RZ/G1M | Firefox 52 | 2611.6ms | 201711 build, BSP2.0, IonMonkey 無効化 |
iWave RZ/G1M | Firefox 52 | 1119.5ms | 201711 build, BSP2.0 |
iWave RZ/G1M | Firefox 60 | 1110.1ms | |
Raspberry Pi 3 | Firefox 52 | 1733.7ms | |
R-Car M3 Starter Kit | Firefox 60 | 1737.3ms | IonMonkey未対応 |
R-Car M3 Starter Kit | Firefox 60 | 1088.3ms | 初期ビルド |
RZ/G2E | Firefox 60 | 4357.1ms | IonMonkey未対応 |
RZ/G2E | Firefox 68 | 3054.6ms ±2.7% | 初期ビルド |
RZ/G2E | Firefox 68 | 5157.9ms ±1.6% | 初期ビルド, javascript.options.ion = false |
RZ/G2E | Firefox 78 | 3096.5.ms ±2.4% | 2020-08-19 WIPビルド |
RZ/G2M | Firefox 68 | 1177.7ms ±1.5% | 2019-10-16 WIPビルド |
Chrome の JavaScript エンジン開発の指標として Google が開発・利用してきたベンチマークであり、Chrome ブラウザ間比較には不適であることに注意。他のブラウザにスコアが追いつかれてからはベンチマーク指標では開発しないと宣言し Google は開発を終了している。
Board | Browser | Result | Note |
---|---|---|---|
Dragon Board 410c | Firefox 45 | 2830 | aarch32 |
Dragon Board 410c | Chromium 56 | 2672 | Android, aarch64 |
Rock Pi 4B | Firefox 60 | 936 | Debian, aarch64 |
iWave RZ/G1M | Firefox 52 | 3715 | 201711 build, BSP2.0 |
iWave RZ/G1M | Firefox 60 | 4680 | |
Raspberry Pi 3 | Chromium 60 | 2510 | |
Raspberry Pi 3 | Firefox 52 | 2700 | |
R-Car M3 Starter Kit | Firefox 60 | 820 | IonMonkey未対応 |
R-Car M3 Starter Kit | Firefox 68 | 3131 | 初期ビルド |
RZ/G2E | Firefox 60 | 312 | IonMonkey未対応 |
RZ/G2E | Firefox 68 | 1073 | 初期ビルド |
RZ/G2E | Firefox 68 | 281 | 初期ビルド, javascript.options.ion = false |
RZ/G2E | Firefox 78 | 1520 | 2020-08-19 WIPビルド |
RZ/G2M | Firefox 68 | 3638 | 2019-10-16 WIPビルド gfx.webrender.all = true, FullHD |
Board | Browser | Result | Note |
---|---|---|---|
SABRE | Firefox 45 | 2325 | |
SABRE | Chromium 40 | CRASH |
Board | Browser | Result | Note |
---|---|---|---|
Dragon Board 410c | Firefox 45 | 13031.2ms | |
Rock Pi 4B | Firefox 60 | 48350.1ms | Debian, aarch64 |
Rock Pi 4B | Firefox 60 | 49275.8ms ±2.9% | Debian, aarch64, max cpu/gpu |
SABRE | Firefox 45 | 16920.9ms | |
SABRE | Chromium 40 | 17495.6ms | |
iWave RZ/G1M | Firefox 52 | 7690.4ms | 201711 build, BSP2.0 |
iWave RZ/G1M | Firefox 52 | 6988.0ms, 7213.3ms | 201712 build, BSP2.0 |
iWave RZ/G1M | Firefox 60 | 7367.6ms | |
Raspberry Pi 3 | Chromium 60 | 13840.4ms | |
Raspberry Pi 3 | Firefox 52 | 13302.4ms | |
R-Car M3 Starter Kit | Firefox 60 | 58018.3ms | IonMonkey未対応 |
RZ/G2E | Firefox 60 | 180670.2ms ±0.6% | IonMonkey未対応 |
RZ/G2E | Firefox 68 | 34038.2ms ±3.6% | 初期ビルド |
RZ/G2M | Firefox 68 | 6877.0ms ±0.9% | 2019-10-16 WIPビルド |
Board | Browser | Result | Note |
---|---|---|---|
Dragon Board 410c | Firefox 45 (aarch32) | 18.464 | |
iWave RZ/G1M | Firefox 52 | 26.990 | |
iWave RZ/G1M | Firefox 60 | 27.656 | |
Raspberry Pi 3 | Chromium 60 | 15.240 | |
Raspberry Pi 3 | Firefox 52 | 17.226 | |
R-Car M3 Starter Kit | Firefox 60 | 7.0776 | IonMonkey未対応 |
RZ/G2E | Firefox 60 | ms | IonMonkey未対応 |
RZ/G2E | Firefox 68 | 8.5993 ± 0.52380 | 初期ビルド |
Board | Browser | Result | Note |
---|---|---|---|
RZ/G2E | Firefox 60 | IonMonkey未対応 | |
RZ/G2E | Firefox 68 | 4.810 | 初期ビルド |
重たい数値演算も JS 側でやる場合はこのあたりのパフォーマンスも重要になる
Board | Browser | Result | Note |
---|---|---|---|
iWave RZ/G1M | Firefox 52 | 1208 | |
iWave RZ/G1M | Firefox 60 | 1189 |
Firefox で WebAssemlby のサポートが入ったのは Firefox 52 から (ESR ではデフォルト無効化されているので注意)。
まだあまりない&これが定番というのが確定していない、Wasm の実アプリケーションベースベンチマーク。
解説ページ: https://pspdfkit.com/blog/2018/a-real-world-webassembly-benchmark/
Board | Browser | Result | Note |
---|---|---|---|
RZ/G2E | Firefox 60 | 703564 | IonMonkey未対応, rendering: 243810, search: 78707, export: 196446, annotation: 113083, init: 71518 |
RZ/G2E | Firefox 68 | 55584 | 初期ビルド, rendering: 13482, search: 7910, export: 10043, annotation: 8857, init: 15292 |
RZ/G2E | Firefox 68 | 172903 | 初期ビルド, javascript.options.ion = false, rendering: 46768, search: 30551, export: 46831, annotation: 32106, init: 16647 |
RZ/G2M | Firefox 68 | 12431 | 2019-10-16 WIPビルド, gfx.webrender.all = true, FullHD, 3370 ms, 1913 ms, 2312 ms, 2099 ms, 2737 ms |
SunSpider などのような JavaScript ベンチ (Octane のサブセット) からレイアウトテスト、SVG テストから GUIMark のような Canvas 系のベンチなどの組み合わせ。 元々スマホ向けで過度に重たくなく個別テスト毎のスコアも出してくれ知名度もある。但しトータルスコアが激減して何かと思ったら一部のテストの計測に失敗してスコアが 0 となっていたり、実行できてもバラツキのあるテストがあったりする点に注意。また、グラフィックス系テストも一部 JS エンジン速度依存が大きい点にも注意。最近はランキング表示のエラーで結果表示失敗するので 公式の URL ではなく GitHub のコードをデプロイしたものを使う方が良さそう。
Board | Browser | Result | Note |
---|---|---|---|
Raspberry Pi 3 | Firefox 52 | 7501 | JS 2369, Layout 167, SVG 115, Periodic 282, Tree 2130, Birds 542, Invaders 1122, Collision 774, 画面解像度 1280x720 |
Raspberry Pi 3 | Firefox 52 | 7251 | JS 2453, Layout 155, SVG 109, Periodic 274, Tree 1986, Birds 515, Invaders 1083, Collision 676, 画面解像度 FullHD |
Raspberry Pi 3 | Firefox 52 (no Ion) | 4466 | JS 203, Layout 155, SVG 107, Periodic 265, Tree 1930, Birds 394, Invaders 918, Collision 494, 画面解像度 FullHD, IonMonkey 無効化したときのスコア。 |
iWave RZ/G1M | Firefox 60 | todo... | |
RZ/G2E | Firefox 60 (no Ion) | 3276 | 初期ビルド。 JS 246, Layout 217, SVG 182, Periodic 176, Tree 988, Birds 476, Invaders 553, Collision 438 |
RZ/G2E | Firefox 68 | 8132 | 初期ビルド, 1920×1080, gfx.webrender.all = true, JS 1162, Layout 512, SVG 4764, Periodic 235, Tree 0, Birds 403, Invaders 549, Collision 507 |
RZ/G2E | Firefox 68 | 4939 | 初期ビルド, 1920×1080, gfx.webrender.all = false (default), JS 980, Layout 303, SVG 350, Periodic 250, Tree 1455, Birds 439, Invaders 596, Collision 566 |
RZ/G2M | Firefox 68 | 17274 | 2019-10-16 WIPビルド gfx.webrender.all = true, FullHD, 3190,913,6872,607,2169,956,1511,1056 |
一部の環境では実行後の結果ランキング表示時にエラーがでて停止するコンソールのログから個別スコアが分かる。スコアが 0 になっているものが含まれる場合は該当テストが実施できておらずスコア比較にならないので注意。
-
UI Benchmark
- 各種 UI フレームワークを使って (アプリレベルでなくプリミティブな) DOM 操作を行うベンチマーク。フレームワークの確認によく使われているようで Preact, Inferno あたりのテストに使いたいがどうもメンテ不足で動かなかったり Firefox では計測値が 1000 単位だったりで使えなさそう
-
Basemark Web 3.0
- 老舗ベンチマーク企業の総合ベンチマークだが重すぎて組み込みテストには向かない
-
WebAudio Benchmark
- Mozilla が自動テストで監視しているが WebAudio の処理速度は用途的に重要度が低いので計測不要
-
GEM DOMBench
- 単なる React のコンテンツ例なのだが実行時間確認も可能 https://github.com/webdino/GEM-DOMBench
- Gecko 60 on RZ/G2E では Total 1294.74sec (chat: 182.40, photo: 659.41, bems: 245.17, graph: 207.76)
- Gecko 68 on RZ/G2E (初期ビルド) では Total 1345.30sec (chat: 159.64, photo: 796.75, bems: 223.66, graph: 165.24) - 全体的に高速書いている中で photo だけが明らかに遅くなっている
- Gecko 68 on RZ/G2E (初期ビルド, WebRender 有効) では Total 1344.76sec (chat: 158.96, photo: 782.05, bems: 233.23, graph: 170.52) - DOM 操作メインなので WebRender が関係するような処理ではない。
- 低性能・低解像度環境向けパラメータでのビルド例: https://dombench-iwg22m.netlify.com/
-
HTML5 test
- 各項目の結果まで保存するときは
Save Results
で表示される QR コードを読み取るなどして結果 URL を記録する - 一般的な PC 版でのスコア例 (組み込みボードでは一部 API が動かなかったりするとスコアが低くなる):
- Firefox 60 = 497
- Firefox 52 = 474
- Firefox 45 = 456
- Firefox 40 = 429
- Chromium 60 = 523
- Chromium 50 = 489
- Chromium 40 = 456
- Edge 13 = 433
- Edge 12 = 377
- IE 11 = 312
- Safari 9.1 = 370
- Safari 9.0 = 360
- 各項目の結果まで保存するときは
Board | Browser | Result | Note |
---|---|---|---|
iWave RZ/G1M | Firefox 52 | 201711 build, BSP2.0 | |
iWave RZ/G1M | Firefox 60 | 477 | 201810 build |
R-Car M3 Starter Kit | Firefox 60 | 477 | |
RZ/G2E | Firefox 60 | 489/555 | |
RZ/G2E | Firefox 68 | 484/555 | 初期ビルド |
測定環境についてのメモ
-
OS について
- Android などと明記されていないものはすべて Open Embedded の標準 BSP を利用
-
CPU Arch について
- aarch32 と aarch64 両方ある環境についてはいずれか明記する
- RZ/G1 シリーズは aarch32、RZ/G2 シリーズは aarch64 など片方しかないものは割愛
-
Dragon Board 410c
- 購入時初期の Android には Firefox 38 が同梱されている
- Chromium や Firefox のビルドをして動作可能
-
Raspberry Pi 3
- Raspbian 標準では Chromium が同梱されている
-
apt-get install firefox-esr
で Firefox ESR をインストールしたもの- Firefox 52 時点では Compositing は Basic だし AzureCanvasAccelerated = 0, HW_COMPOSITING = blocked, OPENGL_COMPOSITING = unavailable となっているビルド (設定)
-
- RK3399 搭載で低価格高性能な Raspberry Pi 互換ボード
- Debian aarch64 4.4.154.c83 カスタムイメージ
- Firefox ESR 60.7 - apt install で導入可能
- max cpu/gpu と書いているものは CPU/GPU governor を performance (動作周波数最大) に設定している状態での計測。GPU はすぐに最大周波数になる (特に 4core 側) が GPU 系のベンチは周波数が上がらないままのことがあり、governor 設定によってスコアが大きく変わる
-
iWave RZ/G1M
- Firefox 52 201711 build, BSP2.0
- Linux 4.4 の BSP 2.0 リリース向けの Firefox 52 をビルドしたモノ
- egl, openmax, webgl, canvas-gpu を有効化したビルド
- Firefox 52 201712 build, BSP2.0
- Linux 4.4 の BSP 2.0 リリース向けの Firefox 52 をビルドしたモノ
- egl, openmax, webgl, canvas-gpu を有効化したビルド
- Firefox 60 (201810 build)
- Firefox 60 (webdino/meta-browser:b4302ae403b7d6994a3ec1efab3728ffd462f9ef)をビルド
- egl, openmax, webgl, canvas-gpu を有効化
- Firefox 52 201711 build, BSP2.0
-
R-Car M3
- Firefox 60
- Renesas-Yocto-v3.9.0向けにFirefox 60 (webdino/meta-browser:b4302ae403b7d6994a3ec1efab3728ffd462f9ef)をビルド
- egl, openmax, webgl, canvas-gpu を有効化
- Firefox 60時点ではIonMonkeyにaarch64対応が入っていないため、JavaScriptの実行は遅い
- Firefox 60
-
- Firefox 60
- Stylo 有効。R-Car M3 のもの同様 IonMonkey 有効化できていない
- Firefox 60
-
RZ/G2E Reference board
- Firefox 60
- Stylo 有効。R-Car M3 のもの同様 IonMonkey 有効化できていない
- Firefox 68
- IonMonkey 有効。WebRender 有効。
- Firefox 60
-
AreWeFastYet
- Mozilla が日々開発版ビルドで自動テストして結果を公開しているサイト (主に JS テスト用)
- 自動テスト用のツール Raptor: https://wiki.mozilla.org/Performance_sheriffing/Raptor
-
Talos テスト
- Mozilla が自動テストしている
-
Blink Performance Tests
- Blink チームのマイクロベンチマーク集。Web アクセス用コピー (2020/01時点): https://blink-perf-tests.now.sh/
-
WebKit のパフォーマンステスト
- WebKit のテスト集のうちパフォーマンスのもの。Web アクセス用コピー (2020/01時点): https://webkit-performance-tests.now.sh