オルタナティブ・ブログ > 少しでもパラノイアになってみる >

知的好奇心を満たすために、いろいろなことにチャレンジする

iPad 3rd genを購入してみた~Canvas&SVGベンチで負荷をかけてみた

»

iPad 3rd genでQuarStrの動作検証をしていて、ちょっと不思議に思いました。

iPad 3rd genでは高解像度にしているため見た目はくっきりしているのですが、描画部分が速くなっている印象がないのです。

iPad 3rd genのハードウェア的にはGPUが強化されました。このため、描画関係は高速化されたのではないかと願っていたのですが、そうでもないのではないかと。QuarStrはそれほど描画が重いゲームではありませんが、SVGを使っているためものすごく軽くもありません(たまに反応悪いなと思うところがあります)。

そこで、Mobile Safari向けの描画に負荷をかけるベンチを作ってみました。それが以下です。

Canvas Bench

Number:

FPS:
MIN FPS:

SVG Bench

Number:

FPS:
MIN FPS:

Numberを設定して、STARTを押すと始まります。また、止めるときはSTARTボタンがSTOPボタンになっているので、そこで押してください(ついでにSTOPボタンを押すまで止まりません)。STOP後にSTARTボタン押すと最初からベンチが始まります。

このベンチは多角形を大量に描いているだけのベンチですが、CanvasとSVGの両方で同じ機能を作りこみしてみました。SVGはもっと高速化する手立てがあるのかも知れませんが、defで設定したグループをuseに張り替えている簡単なベンチです。

Canvas Benchは5大ブラウザ全て動きますが、SVG Benchは、Firefox、Chrome、Safariでしか動きません。IEはなんかおかしいですし、Operaは画面上に表示されません(うまく動いていない)。

ベンチを取る前にハードウェアのスペックは以下になります。比較としてNEXUS SC-04Dも対象にします。

  iPad 3rd gen iPad 2 iPad NEXUS
SC-04D
チップ名称 A5X A5 A4 OMAP 4460
CPU Cortex-A 9
& 2core
Cortex-A 9
& 2core
Cortex-A8
& 1core
Cortex-A9
& 2core
GPU PowerVR
SGX543MP4
PowerVR
SGX543MP2
PowerVR
SGX535
PowerVR
SGX 540

このベンチを各iPadのMobile SafariとNEXUS SC-04-Dのデフォルトのブラウザで取ってみました。結果は以下になります。値はFPS(MIN FPSの値を参照)のため、数字が大きいほど優秀であることを示しています。左欄の数字は個体数になります。

iPad 3rd
gen
iPad 2 iPad NEXUS
SC04D
Canvas 10 24.0 30.7 13.6 21.3
Canvas 50 9.9 9.9 3.7 7.5
Canvas 100 5.8 5.7 2.1 5.8
Canvas 200 3.3 3.3 1.4 4.2
SVG 10 11.4 18.9 11.1 11.8
SVG 50 3.7 4.5 2.4 3.8
SVG 100 2.2 2.5 1.4 2.4
SVG 200 1.4 1.5 0.8 1.5

SVGに関しては描画する解像度が上がっているためか、iPad 3rd genで低速化しています(ガーン...orz)。

Canvasに関しては解像度増加しても速度差はほとんどありません。iOS 5でCanvasはGPU対応されている関係でしょうか。SVGはGPU対応していないので、CPUで計算していると解像度の影響で遅くなっているのかも知れません。

いや、SVGはCanvasよりも遅くなることは知っていたのですが、ここまで差が開くとは思っていませんでした。Canvasは毎回全画面再描画しているのですが...

Asteroids benchやPeasekeeperの結果を見てもiPad 3rd genとiPad 2でほとんど差がなかったので、今回のCanvasベンチの結果も似たような傾向を示したと考えるべきですかね。

上記のベンチが公平なベンチではないため、Mobile Safariを弱点を見抜いているか分かりませんが、Canvasは変わらず、SVGは遅くなると考えてもいいのかと思いました。

ベンチソースはソース置き場のcanvasandsvgbench_v0_1_0.zipです。もし必要ならばご使用ください。このページでも十分に動きます。

また、ベンチ上ではwindow.devicePixelRatioを表示させています。これは、iPad 3rd genで見ると"2"と出ます。これはiPhone 4からもこの数字が"2"になっており、細かいピクセルであることを示しています。このため、screenのwidthとheightとdevicePixelRatioから物理的解像度を把握可能です。Webkit向けのため、IEやFirefoxではこの値は表示されません。

Comment(0)