簡単なコード性能テスト方法
8771 ワード
通常、コードパフォーマンステストでは、開始時にタイムスタンプを取得し、テストするコードを実行し、終了時にタイムスタンプを取得し、2つのタイムスタンプを減算してコード実行にかかる時間を取得します.この方法は理論的に実行可能であるが,結果は必ずしも正確ではなく,特に実行されるコードが数ミリ秒の実行時間しかない場合である.システム上で実行される他のプロセスは、結果のばらつきを引き起こす可能性があります.より良い方法は、テストされたコードを単位時間(例えば1秒)で循環させ、単位時間で完了した循環回数を統計してコード性能を評価し、テストを繰り返して平均値または中値を得ることができる.これらのテストは同じ時間に実行され、より優れたコードはより多くのサイクルを完了します.
一般的な単一実行式のテスト方法:
単位時間サイクル実行式のテスト方法:
例えばテストしますrandom()*255>>0とparseInt(Math.random(*)*255)は、どちらも数値を整数化しており、通常はランダムカラー(rgb(255,255,255,255))を設定する際に使用されます.
次のテストコードを作成します.
それぞれ5回テストした結果:
テストrandom()*255>>0の結果
43594444339976432449142188704339112
テストparseInt(Math.random(*255)の結果
36197793713368363992236297293661628
第1の方法は第2の方法よりも速く,ビッグデータ量処理の場合,第1の方法を選択したほうがよいことがわかる.
一般的な単一実行式のテスト方法:
var startTime = new Date().getTime();
//
runtest();
var timeElapsed = new Date().getTime() - startTime; //
単位時間サイクル実行式のテスト方法:
var startTime = new Date().getTime(), count, timeElapsed;
for(count = 0, timeElapsed = 0; timeElapsed < 1000; count++){
//
test();
timeElapsed = new Date().getTime() - startTime;
}
// count
例えばテストしますrandom()*255>>0とparseInt(Math.random(*)*255)は、どちらも数値を整数化しており、通常はランダムカラー(rgb(255,255,255,255))を設定する際に使用されます.
次のテストコードを作成します.
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
</style>
<script type="text/javascript">
function runtest(func){
var startTime = new Date().getTime(), count, timeElapsed;
for(count = 0, timeElapsed = 0; timeElapsed < 1000; count++){
func();
timeElapsed = new Date().getTime() - startTime;
}
addResult();
function addResult(){
var li = document.createElement('li');
li.innerHTML = count;
document.getElementById('test_result').appendChild(li);
}
}
/* your test code here */
function test1(){
var num = Math.random()*255>>0;
}
function test2(){
var num = parseInt(Math.random()*255);
}
</script>
</head>
<body>
<button onclick="runtest(test1)">run test1</button>
<button onclick="runtest(test2)">run test2</button>
<ol id="test_result">
</ol>
</body>
</html>
それぞれ5回テストした結果:
テストrandom()*255>>0の結果
43594444339976432449142188704339112
テストparseInt(Math.random(*255)の結果
36197793713368363992236297293661628
第1の方法は第2の方法よりも速く,ビッグデータ量処理の場合,第1の方法を選択したほうがよいことがわかる.