2012-12-22 9 views
14

(質問がthree.jsに固有ではないですが、私は例として使用します)javascriptを使用してデバイスのCPU/GPUパフォーマンスを検出しますか?

私は(最近のWebアプリケーション・インターフェースを開発するthree.jsを使用し、WebGLのキャンバスレンダラの間でいくつかの素晴らしいフォールバックを書かれていますデスクトップブラウザの場合)。

しかし、今の問題は適切にデバイス機能を検出する方法になり、問題の2つの側面があります:

  1. ブラウザは(WebGLの/キャンバスのような静的な機能)を備えてい:これは、主にウェブコミュニティ内で解決され、単純な特徴検出を使用して。
  2. デバイス機能:これはハード部分であり、デバイスのハードウェア情報に直接アクセスすることなく、ハードウェアの要求が少ないコードにフォールバックする必要があるかどうかを示す方法が必要です。

顕著な例:Firefoxのモバイル/オペラモバイルはWebGLの支援を主張するが、バグであるか、またはデバイスのハードウェアによって制限されます。

私がこれまでに出てくるいくつかの回避策:

  1. は、性能指標として共通の特徴を使用する - タッチデバイスは、例えば、一般的にはあまり強力なハードウェアを持っています。コンセプト:これは未来を証明するものではない。
  2. 既知のバグのあるブラウザ/デバイス - UAの盗聴は避けられず、維持するのが難しい場合があります。
  3. パフォーマンステスト - したがって、コードを実行してフレームレートを測定する以外に、より良いオプションがありますか?

多分、これは難しいとは限りませんが、他にも提案はありますか?

答えて

0

WebGLハードウェアサポートと機能検出にhttp://webglstats.com/を使用できます。

+1

統計情報は興味深いものですが、私はこれを自分のサイトの個々のユーザーにどのように適用できるのかわかりません(適切なフォールバックを可能にするため、デバイス/ブラウザのブラックリストなし)。また、コードからiframeで検出が行われたようですが、私は方法の選択に疑念を抱いています。 – bitinn

+0

確かに。これは非常に興味深い情報ですが、機能の検出だけであり、ユーザーごとに独自に行うことができます。フィーチャの実装とパフォーマンスの間にかなりの相関関係を描きたい場合を除いて、パフォーマンスを教えてくれるわけではありません。 – desau

12

高性能CPU/GPUデスクトップ、テーブルや電話機などの低速デバイスで利用できるキャンバス機能を利用したいプロジェクトで、パフォーマンス測定手法を使用しました。

基本的にはシーンの複雑さが最小限で始まり、レンダリングループが33ms未満であれば複雑さが増します(レンダリングループが遅くなりすぎると複雑さが減ります)。

あなたのケースでは、クイックキャンバスとWebglのパフォーマンステストを実行してから、それを選択する必要があるかもしれません。私はこれを解決するためにいくつかの時間を費やしていましたが、これをより良く解決するいくつかのトリッキーな非自明の手法に遭遇していません。

+0

着陸したソリューションが大好きです。共有してくれてありがとう。 – jlmakes

+0

+1、ダイナミックな検出と調整が唯一の方法です。特にバッテリを使用するデバイスをサポートしたい場合、低性能モードのミッドフライに切り替えてバッテリを節約することができます。静的検出を一度行うと、そのような環境の変化が見逃されます。 –

0

three.jsを使用している場合は、detect.jsを使用してwebglが有効かどうかを調べることができます。また、キャンバスレンダラーから遠ざかることも助けになります。 webglrendererまたはsoftwarerenderを使用してください。それらがより多くの頂点を可能にするからです。ソフトウェアレンダリングはかなり新しく、いくつかの作業が必要ですが、使用することができます。

関連する問題