Skip to content

Instantly share code, notes, and snippets.

@uupaa
Last active April 8, 2016 02:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save uupaa/62b94fdacd681e7bc9b8 to your computer and use it in GitHub Desktop.
Save uupaa/62b94fdacd681e7bc9b8 to your computer and use it in GitHub Desktop.
HTML5 canvas bench: particle 30000

このエントリは、HTML5 Canvas の機能を使い、負荷状態におけるブラウザの描画性能を記録したエントリです。

3つのタイマーAPI

JavaScript でアニメーションを駆動するには、以下の3つのタイマーAPI から1つ選んで使用することになります。

  • A: window.setTimeout(4)
  • B: window.setInterval(16)
  • C: window.requestAnimationFrame()

requestAnimationFrame は Firefox 4 で初めて登場した API です。画面更新のタイミングで無駄なく描画できるため、setInterval や setTimeout よりも負荷軽減が期待できます。

これらを用いたベンチマーク particle 30000 でスコアを測ってみました。

Benchmark scores

Mobile Safari A B C
iPod touch 4G (iOS 5.0.1) 8.5 8.0
iPhone 3GS (iOS 4.3.3) 5.1 5.2
iPhone 3GS (iOS 6.1) 4.1 4.14 4.1
iPhone 4 (iOS 5.0.1) 9.0 9.0
iPhone 4S (iOS 5.0) 13.5 14.1
iPhone 4S (iOS 5.1.1) 14.6 15.0
iPhone 4S (iOS 7.1) 34.0 34.2 34.6
iPhone 4S (iOS 8.1.3) 27.5 33.4 19.8
iPhone 4S (iOS 8.2.0) 30.0 36.6 20.9
iPhone 4S (iOS 8.3.0) 29.8 33.2 20.2
iPhone 4S (iOS 8.4.0) 31.2 34.4 21.5
iPhone 4S (iOS 8.4.1) 31.8 37.0 22.6
iPhone 5 (iOS 6.0.1) 16.0 18.3 18.0
iPhone 5 (iOS 6.1.0) 16.0 18.0 18.0
iPhone 5 (iOS 7 beta) 59.0 57.0 59.0
iPhone 5 (iOS 7 beta2) 59.0 57.0 59.0
iPhone 5 (iOS 7 beta4) 64.2 58.8 60.0
iPhone 5 (iOS 7 beta6) 63.5 58.4 60.0
iPhone 5 (iOS 7 GM seed) 66.4 59.1 60.0
iPhone 5 (iOS 7.0.3) 65.2 59.2 60.0
iPhone 5 (iOS 7.1 beta5) 66.3 59.1 60.4
iPhone 5 (iOS 8.0 beta3) 49.6 59.8 51.6
iPhone 5 (iOS 8.0 beta5) 56.6 59.9 30.0
iPhone 5 (iOS 8.0 GM Seed) 55.4 59.9 30.0
iPhone 5 (iOS 8.0.2) 56.2 59.9 30.0
iPhone 5 (iOS 8.1) 53.3 59.9 30.0
iPhone 5 (iOS 8.1.1) 56.6 60.0 30.0
iPhone 5 (iOS 8.1.3) 54.8 60.0 30.0
iPhone 5 (iOS 8.2 beta) 50.7 60.0 30.0
iPhone 5 (iOS 8.2 beta 5) 51-56 60.0 30.0
iPhone 5 (iOS 8.3) 53.7 60.0 30.0
iPhone 5 (iOS 8.4 beta 4) 55.6 60.0 30.0
iPhone 5 (iOS 9 beta 1) Crash Crash Crash
iPhone 5 (iOS 9 beta 4) 57.0 59.0 30.0
iPhone 5 (iOS 9 beta 5) 60.0 56.5 30.0
iPhone 5 (iOS 9 GM Seed) 59.1 59.0 30.0
iPhone 5 (iOS 9.1 beta 1) 52-63 60.0 30.0
iPhone 5 (iOS 9.1 beta 2) 60.0 60.0 31.0
iPhone 5 (iOS 9.3 beta 1) 69.0 60.0 33.0
iPhone 5 (iOS 9.3 beta 2) 60.0 60.0 30.0
iPhone 5 (iOS 9.3 beta 7) 60.0 60.0 31.2
iPhone 5s (iOS 8.1.3) 94.3 58.8 33.3
iPhone SE (iOS 9.3.0) 117.5 60.0 60.0
iPhone 6s (iOS 9.0.1) 105.0 60.0 60.0
iPhone 6s (iOS 9.1) 110.0 60.0 60.0
iPad 2 (iOS 4.3.3) 12.9 12.9
iPad 2 (iOS 5.0) 16.4 17.6
iPad 2 (iOS 6 beta) 12.5 12.4 12.5
iPad 2 (iOS 8.1.1) 36.8 44.0 29.7
iPad 3 (iOS 5.1) 17.3 18.3
iPad 3 (iOS 6.1.3) 12.4 12.0 12.6
iPad 3 (iOS 7 beta2) 35.5 35.4 35.4
iPad 3 (iOS 7 beta4) 40.2 40.4 39.9
iPad mini 2 (iOS 8.2) 68-88 54.2 59.0
iPad mini 2 (iOS 9.0.1) 95-100 60.0 60.0
Android Browser A B C
HTC Desire HD (OS 2.2, 533.1) 5.2 3.9
SoftBank 005SH (OS 2.2.1, 533.1) 5.2 5.2
GALAXY Nexus (OS 4.0.1, 534.40) 11.9 13.4
NW-Z1000 (OS 2.3.4, 533.1) 3.0 3.1
NW-Z1000 (OS 4.0.4, 534.30) 11.3 12.1
Chrome for Android A B C
GALAXY Nexus (4.0.1 Chrome β) 18.4 21.5 17.2
Nexus 7 (2012)(4.1.0 Chrome 18) 38.0 42.0 18.2
Nexus 7 (2012)(4.2.0 Chrome 18) 38.0 42.0 18.2
Nexus 7 (2012)(4.1.0 Chrome 25 β) 29.7 29.5 29.7
Nexus 7 (2012)(4.2.2 Chrome 28 β) 28.8 31.1 29.8
Nexus 7 (2012)(4.3.0 Chrome 29 β) 38.9 41.1 29.8
Nexus 7 (2012)(4.3.0 Chrome 31 β) 38.6 39.9 39.2
Nexus 7 (2012)(4.4.0 Chrome 32 β) 37.5 40.6 36.6
Nexus 7 (2012)(5.0.0 Chrome 39 β) 28-55 32.4 28.1
Nexus 7 (2012)(5.0.2 Chrome 40 β) 44.9 53.3 45.5
ZenFone2 ASUS_Z00AD (5.0.0 Chrome 44 dev) 62-82 58.2 39-48
Chromium based Browser A B C
ZenFone2 ASUS_Z00AD (5.0.0 Chromium 40) 59-82 58.2 37-44
WebKit Based Browser A B C
Wii U Browser (WebKit534.52)
(NintendoBrowser/1.1.0.7579.JP)
7.5 8.3
Firefox Mobile A B C
HTC Desire HD (OS 2.2, Fx 5) 20.2 ? 20.5
GALAXY Nexus (OS 4.0.1 Fx 10) 14.3 14.3 14.3
Nexus 7 (2012, OS 4.1, Fx 16) 15.2 15.4 15.2
Nexus 7 (2012, OS 4.3.0, Fx 25 β) 48.7 49.1 49.2
  • 数値は fps です
  • 測定は、電源を再投入し、余計なタブを消した状態で、描画開始から10秒ほど待ち数値が安定してから測定しています

Windows PC

  • MacBook ( http://support.apple.com/kb/SP579 ), BootCamp + Windows 7
  • MEMORY: 4GB
  • エクスペリエンスインデックス: 5.1 -- プロセッサ: 5.8 -- メモリ: 5.8 -- グラフィックス: 5.1 -- ゲーム用グラフィックス: 5.5 -- プライマリハードディスク: 5.9
Windows PC A B C
IE 9.0.1 (x86) 46.0 45.0
IE 9.0.1 (x64) 17.0 17.0
IE 10 pp1 42.5 45.0
IE 10 pp2 40.0 40.0 44.0
Safari 5.1.2 45.0 52.0
Firefox 10 125 62.5 60.0
Firefox 15.1 100 62.0 60.0
Chrome 17 141 60.0 60.0
Opera 11.61 110 62.5
Opera 12 100 62.4

まとめ・雑感

  • Mobile WebKit 533.1~534.40 (Android Browser) には Premultiplied Alpha の扱いが異なるため、パーティクルが緑色で表示されます
    • Chrome for Android βで修正されています
  • setTimeout(fn, 4) は setInterval(fn, 16) に比べ高負荷です。
  • Firefox は ver 5 から、Opera は ver 11 から HTML5 の仕様( setTimeout(4) )をサポートしています
  • setImmediate は msSetImmediate として IE 10 pp2 に先行実装されています。http://ie.microsoft.com/testdrive/Performance/setImmediateSorting/Default.html
  • この記事は、 http://d.hatena.ne.jp/uupaa/20110622/1308713373 のリニューアル版です。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment