2017-04-14 4 views
0

私は、インテルXDKのコードジャーアプリケーションをJSでビルドしています。数ミリ秒ごとにsetIntervalを使用して関数を呼び出します。インテルXDK遅いAPK

エミュレーションまたはクロムでアプリケーションを再生すると、非常にスムーズに動作します。何も問題はありません。しかし、私がAndroid Phone(Galaxy S7)にアプリをビルドすると、それは約4倍遅くなります。

なぜモバイルでは遅いのですが、パソコンでは遅くなるのでしょうか?それは防ぐことができますか?前もって感謝します!

var func = function() { 
// code code code 
} 
setInterval(func,1); 

モバイルでは約20〜30ミリ秒かかりますが、頻繁に変化するデスクトップでは、これは約4ミリ秒ごとに発生します。

答えて

1

すべてのJavaScriptランタイムとプロセッサが等しいとします。残念ながら、そうではありません。モバイルデバイスのコンピューティングリソースは、ラップトップよりもはるかに能力が劣ります。あなたのラップトップ/デスクトップのランタイムには、より速くて能力の高いプロセッサ、より多くのRAMなど、より多くの利用可能なリソースがあります。同様に、モバイルデバイスのJavaScriptランタイムは、バッテリ効率に最適化されたJavaScriptランタイムを実行しています。ラップトップ/デスクトップで実行されているパフォーマンスに最適化されたランタイムと比較して、リソースが無制限のリソースのように感じられます。 Androidバージョンの違いがあっても、特にAndroid 4.xデバイスのJavaScriptランタイムとそれ以降のバージョンのデバイスを比較すると、影響があります。

JavaScriptイベントループがすべての実装で4ミリ秒を処理できるというルールはないため、プラットフォームAで測定したパフォーマンスがプラットフォームBで再現可能であるとは想定できません。結果に影響を与える制約と設計目標の実際の違いがあります。このページには、発生する可能性がある問題のいくつかの素敵な記述があり

>https://javascript.info/settimeout-setinterval#summary <とこのプレゼンテーションでは、インテルXDKでアプリケーションを実行すると>http://2014.jsconf.eu/speakers/philip-roberts-what-the-heck-is-the-event-loop-anyway.html <

JavaScriptのイベントループについての詳細を理解するのに役立つかもしれませんデスクトップのChromiumブラウザで実行している[シミュレーション]タブ。 ハードウェアをシミュレートしていませんが、コード内のロジックをデバッグすることは厳密には便利です。

関連する問題