2011-02-09 12 views
2

変数宣言のような非常に基本的なものについていくつかのスピードテストを行いたい。js変数宣言の速度をテストする

今私はX時間をより重要な時差を持つように実行する関数を持っています。

http://jsfiddle.net/eTbsv/(あなたがあなたのコンソール&を開く必要があり、それが実行に数秒かかります)

これはコードです:

var doit = 10000000, 
    i = 0, 
    i2 = 0; 

//testing var with comma 
console.time('timer');  
function test(){ 
    var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z; 
}; 
while (i<=doit){ 
    test();  
    i++; 
}; 
console.timeEnd('timer'); 

//testing individual var declarations 
console.time('timer2'); 
function test2(){ 
    var a; var b; var c; var d; var e; var f; var g; var h; var i; var j; var k; var l; var m; var n; var o; var p; var q; var r; var s; var t; var u; var v; var w; var x; var y; var z; 
}; 
while (i2<=doit){ 
    test(); 
    i2++; 
}; 
console.timeEnd('timer2'); 

は今、私は2つの質問があります。

  1. です変数宣言のスピードをテストする正確な方法?
  2. どうすればfirefoxをクラッシュさせることなく、より多くのサイクルをテストできますか?たとえば、doitを1000000000に設定した場合、firefoxはスクリプトを停止します。
  3. なぜ私のスクリプトとjsprefの結果は毎回違うのですか?いつか、個々の変数宣言は、グループ化され、その後高速です:/

編集だけで作られたJS県のテストケース:異なるブラウザや構成で、あなたの一部が参加することができればhttp://jsperf.com/testing-js-variable-declaration-speedがいいだろう。しかし、私はまだそれをテストするこの方法が正確であるかどうかを知りたいと思っています。

+3

あなたはhttp://jsperf.comに出会ったことがありますか? – lonesomeday

+0

いいえこのリンクでは+1しません。 – meo

答えて

2

これは変数宣言の速度をテストする正確な方法ですか?

大まかなアイデアを得るには十分ですが、完璧ではありません。ほとんどのものと同様に、CPUに依存します。ウィルススキャナなどの別のアプリケーションやブラウザからのフィッシングチェックなどの別のアプリケーションのために、テスト中にCPUが急増すると、JavaScriptの実行が遅くなる可能性があります。 CPUがアイドルであっても、それは正確な科学ではなく、良い平均を得るためには何度も実行する必要があります。

どうすればfirefoxをクラッシュさせることなくテストすることができますか?たとえば、doitを1000000000に設定した場合、firefoxはスクリプトを停止します。

FirefoxはJavaScriptの実行を最大10秒に制限します。私は、回避策があるかどうかはわかりません。

なぜ私のスクリプトとjsprefの結果は毎回異なるのですか?時々個々の変数の宣言がグループ化されてより速くなります:/

おそらく2つの間に実際の違いはないでしょう。すべての変数宣言は "ホイスト"されています。これは、最適化として実行時ではなく解析時に行われる可能性が高いため、解析された後の関数の内部表現は同じになります。唯一の違いは、定義されていない変数を初期化し、空の関数を実行するのにかかる時間に影響を与える微妙な要素です。

+0

これらの仕様に感謝します。 – meo

0

2に関しては、ユーザー入力用のループを中断するだけで、無応答のスクリプトダイアログを簡単に停止することができます。

したがって、n回の繰り返しごとに警告を表示します(この期間はタイマーを停止してください)。

あなたはスパイダーモンキーなどでこのことを検討しましたか、特にブラウザの実装に興味がありますか?

+0

私はちょうどグループ化された変数の宣言を作るためには、より美しさだけでなく、より速く私のwokring buddysにprooveしようとする。 – meo