2016-07-03 1 views
1

Iループに使用し、setInervalを使用した単純なカウンタループの性能を比較して、この例を持って次のように、exeuction時間差が巨大である:Javascript setIntervalが1ミリ秒未満で実行されていますか?

var i = 0; 
var i2 = 0; 
var int1 = null; 

console.time("for loop"); 
do{ 
    i++; 
}while(i <= 1000); 
console.timeEnd("for loop"); 


function fnc(){ 
    if(i2++ == 1000){ 
    clearInterval(int1); 
    console.timeEnd("interval loop"); 
    } 
} 

console.time("interval loop"); 
int1 = setInterval(fnc , 1); 

出力

enter image description here

デモをご覧ください:http://jsbin.com/jusiqilayi/edit?js,output

私たちに機能を実行することが可能かどうかを知りたいです1ms未満の時間間隔でsetIntervalを実行しますか?または、setIntervalを使用して、指定されたサンプルのパフォーマンスを向上させる方法がありますか?

+0

私はあなたの質問を5分以上見てきました。この例では誰かがなぜ 'setInterval'メソッドを使いたいのか理解できません。または多分私はちょうど質問を得ないのですか? –

+0

質問は、setInervalパフォーマンスの最終行についてです。単純な1命令コードの実行時間を変数を増やすほど簡単にすることは可能ですか?今はっきりしていることを願っています。 –

+0

@Ismailが最小遅延の下で答えると4ms(効果を見るためにあなたの状態値を倍増させることができます)また、間隔を使用することの全体的なポイントは、遅延なく論理的にそれを使用しないで各呼び出しの前に遅延を作成することですセンス。 –

答えて

3

setIntervalおよびsetTimeoutは、少なくとも最小遅延を使用するように強制されます。最小遅延、DOM_MIN_TIMEOUT_VALUEは、HTML5 specで指定されている4ミリ秒で、2010年以降にリリースされたブラウザ間で一貫しています。

現代のブラウザでは、021msのタイムアウトをdescribed hereとして実装するための回避策として、window.postMessage()を使用できます。

+0

これをクリアしていただきありがとうございます.4msの遅延制限を下回る可能性がありますか? –

+0

残念ながら、あなたは(私が知る限りは)できません。 'window.postMessage()'の回避策を試してください。 –

+0

@Ismailありがとうございます。 –

関連する問題