2012-09-12 2 views
10

非常に写真が重くなるWindows 8 Metroスタイルのアプリを開発しようとしているので、UIのパフォーマンスが心配です。 iOSでは、私たちが必要とするUIパフォーマンスを得るためにHTML上のObjective-Cを使用するという簡単な決定でしたが、Windows 8を調べると、HTML5/CSSよりもはるかに高速なXAMLがどれほど速くなるかを知るのに時間が掛かります。Windows 8のXAMLベースのアプリケーションは、HTML/CSSよりも大幅に高速ですか?

私は、XAMLとHTML5(のようなthis one)間の一般的な比較を見てきた、とSO answerそのタッチパフォーマンスにがありますが、彼の主張をバックアップするか、XAMLが高速である理由を説明するためにデータを提供していません。

私が読んだところでは、HTML5/CSSはIE10のレンダリングエンジンを使用してレンダリングされています。つまり、ネイティブではないため、処理速度が遅くなる可能性があります。しかし、どのようにXAMLがレンダリングされているのか、あるいは単に「ネイティブ」なのかは分かりません。

2人の技術の間でパフォーマンスの比較を行った人はいますか、それぞれの表示方法を詳しく説明するリンクを提供できますか?ここで

+0

新しいXAMLインプリメンテーションAFAIKは、すべてネイティブであり、レンダリングのほとんどの部分でDirectXを使用します。しかし、IE10ではレンダリングにDirectXも使用されていると思います。 – Krishna

+0

開発者が各テクノロジに精通していることを覚えておいてください。エンジニアがプラットフォームの適切なパターンやデータ構造に精通していないため、アプリケーションのパフォーマンスが低下することがよくあります。一般に、UIエンジンは、大部分のユースケースで十分に高速です。これらを極端に進めると、違いを発見する可能性が高くなります。 – allingeek

答えて

12

この1の私の考えです:

まずXAMLはあなたのHTML5よりも優れた性能を与えることができます。 XAMLとC++を組み合わせて使用​​すると、C++がネイティブコードであるため、WinRTのパフォーマンスが最も向上します。代わりにC#を使用する場合、ネイティブコードより遅いCLR(共通言語ランタイム)に依存します。
- Reference 1
- Reference 2

第二に、あなたはおそらく、それがパフォーマンスに影響を与えることになるだろうJavaScriptライブラリの多くを含めるしようとしている場合。 (jQuery、jqQueryプラグイン、backbone.js、...)

JSのHTML5は、IEのエンジンを使用してレンダリングされます。だから、これは難しいものです。それは実際にコードを書く方法に依存します。 XAMLとJSのベストプラクティスは、hereです。

個人的な経験から。私はXAML/C#を使ってアプリを書いた。それは、Windows Phone 7と7.5のほうが優れています。主に.NETをトリミングしたためです。新しいasyncawaitモデルはかなり良いです。あなたのケースでは、非同期呼び出し、Webサービスまたはイメージレンダリングを簡単に実装できます。

しかし、私も数字に興味があるので、誰かがテストを済ませれば、それは素晴らしいでしょう。

+0

ベストプラクティスのリンクは非常に便利で、ありがとう、各プラットフォームの仕組みに関する情報があります。 –

+10

XAMLレンダリングエンジンは、C++またはC#を使用している場合でも、純粋なC++/COMです。 C#の背後にあるコードは基本的にCLRを使用しますが、レンダリングは使用しません。 CLR-COM境界を越えなければならないため、コードからUI要素にアクセスするにはパフォーマンスが低下しますが、これは最小限です。コードとのやり取り(例えばアニメーション)を必要としないプレゼンテーションは、C++でもC#でも同じスピードで実行する必要があります。 JSについての残りの注釈は有効ですが、WinRTが最初に実行する際にJavaScriptコードを "JITコンパイル"することは注目に値します。 –

+0

@ JaredBienz-MSFT、FlipViewはC#でFlipViewと同じC++レンダリングエンジンにJS呼び出しを使用していますか?または、JS FlipViewは完全に異なった実装をしていますし、カスタムコントロールのようなJS/HTMLをJSで使用していますか? –

3

IE10には、GPUアクセラレーションされたHTML5キャンバスを含むハードウェアアクセラレーションエンジンが搭載されています。つまり、レンダリングには両方の方法でGPUが使用されるため、HTML5ではレンダリングがXAMLと同じように高速になる可能性があります。

ロジックはJSでは数倍遅くなることがありますが、多くの場合問題にはなりません。あなたのアプリが多量のロジック処理でボトルネックになっておらず、多くのアプリが重いループなしで主にイベント駆動されているような場合、JSはおそらく十分速いです。

次に、HTML5を他のプラットフォームに移植する方がはるかに簡単です。

2

処理速度が速く必要な処理や特定の時間枠内で実行する必要がある処理を行わない限り、速度は大きな問題ではありません。

実際には、コンピューティングは非常に速くなり、最適化に費やす時間は新しい便利な機能を実装するだけで時間がかかります。必要な場所のみを最適化してください。

私は、2の機能性に基づいてあなたの選択をし、それぞれをどれだけうまく知っていると言います。実際には数ミリ秒で心配する必要はありません。あなたのエンドユーザーのほとんどがアプリケーションのベンチマークには向かないと思いますが、それらは機能や機能によって引き込まれる可能性が高くなります。

私たちは64kbのRAMと400mhzのCPUで動作していません。

もちろん、これはプロセッサ集中型ではないことを前提としています。もしあなたがそうであれば、あなたは間違った技術をすべて一緒に探しています。

関連する問題