38

ビジュアライゼーションに D3.js と SVG を使用することに決めたので、SVG はデスクトップ ブラウザーまたはネイティブ シェルで正常に動作するように見えますが、iOS モバイル プラットフォームでのパフォーマンス速度の低下に本当に困惑しています。

次のテストによると、SVG のパフォーマンスが向上しており、Canvas の速度にそれほど遅れをとっていないように見えます。これは朗報です。

悪いニュースは、これらのテストを新しい iPad の Safari ブラウザーで実行すると、SVG と Canvas の両方で速度が大幅に低下することです。残念なことに、iPad 用の新しい Chrome ブラウザーでこれらのテストを実行すると、速度がさらに低下します。

Google は、Apple の Nitro JavaScript エンジンによって高速化されていない UIWebview を使用することを余儀なくされていることを読みました。また、Apple が HTML5 を推し進めていることも読みましたが、デモは独自の Safari ブラウザでしか実行できません。

とにかくここで何が問題なのですか?私のアプリの最適なターゲットはモバイルですが、D3.js などの優れた API や SVG などの HTML5 標準を使用しても、パフォーマンスが低下しています。これは、Apple が独自の議題のために進歩を遅らせたいと考えているためですか? とにかく私にはそう見えます。これらのテストが Android でどのように表示されるかわかりません。知っておくとよいでしょう。テストが肯定的である場合、おそらく私は iPad を取り除き、Android に移行するでしょう。

肝心なのは、これらの速度の問題により、HTML5 テクノロジを使用してアプリを作成できるかどうかわからないということです。また、将来は HTML5 に移行するため、Objective-C の学習にも興味がありません。私は Web とその標準を信じていますが、ブロックされているようです。このジレンマの解決策を知りたいと思っています。

4

3 に答える 3

7

iOS7 では、JavaScript を使用して SVG をアニメーション化するパフォーマンスが著しく低下していますが、静的な SVG 描画は非常に高速です。iOS7 リリースのパフォーマンスに関するブログを書きました。詳細については、こちらをご覧ください。

更新: iOS7.1 では JavaScript アニメーションのパフォーマンスの問題が修正されました。50fpsに戻った

于 2013-10-31T00:35:07.963 に答える
3

デスクトップ ブラウザー (FF/Chrome/IE 9+) で同じアプリを実行するよりも、私の第 1 世代の iPad で d3.js/SVG を実行すると非常に遅いことがわかりました。

ここで試みたさまざまな改善点を書き留めました: http://hivemindmap.blogspot.co.uk/2013/01/html5-and-interactive-graphs.html

于 2013-01-07T16:23:28.107 に答える
0

通常、デスクトップ キットよりもモバイル デバイスの方がパフォーマンスが低くなります。一般に、彼らのハードウェアはそれほど強力ではなく (完全な速度よりも低消費電力を重視しています)、使用する RAM とストレージが非常に少なくなります。私のデスクトップ上の Chrome には、複数のプロセッサ、8 GB の RAM、そして途方もなく強力な GPU が自由に使用できます。私のiPadでは、そのレベルのパワーに近いところはありません。

サードパーティの iOS アプリケーション (Chrome を含む) は Nitro を使用できません。これは、Nitro がメモリを実行可能としてマークできるためであり、(セキュリティ上の理由から) サードパーティのアプリケーションがそれを実行することを信頼されていないためだと思います。ほとんどの HTML5 は、iOS のどのブラウザーでも動作します (Opera Mini は例外となる可能性があります)。キャンバスと SVG のアニメーションは、すべて Javascript によって駆動されるため、Safari よりも遅くなります。これも、Nitro へのアクセスがないために妨げられています。これはもはや真実ではありません。iOS 8 の時点で、サードパーティのアプリは、Safari と同じ高速な JavaScript エンジンにアクセスできるフレームワークを使用できるようなりましたWKWebView

ネイティブ コードは通常、ハードウェアに非常に近く、Web スタックを経由するのではなく、ディスプレイ API を直接ヒットするため、高速になります。

通常、解決策はすべてを単純化することです。ネイティブ ゲーム開発者が iOS デバイスで動作するように 3D ゲームの複雑さを大幅に軽減しなければならなかったのと同じように、Web 開発者は SVG とキャンバス アプリの複雑さを軽減する必要があります。一般に、ページに飛び散るものが少ないということは、パフォーマンスが高いことを意味します。

できるトリックはたくさんありますし、このテーマに関する読み物もたくさんあります。http://www.html5rocks.com/en/tutorials/canvas/performance/http://www.html5gamedevs.com/tag/performance/、およびその他の Google を読んでください。個人的には、アイデアを完全に放棄する前に、概念実証を作成してテストします:)

于 2012-08-01T14:19:41.740 に答える