一种简单的代码性能测试方法

一般咱们在作代码性能测试时,会在开始时获取一个时间戳,而后执行要测试的代码,在结束时再获取一个时间戳,而后两个时间戳相减得出代码执行消耗的时间。这种方法理论上可行,但结果并不老是准确的,特别是被执行的代码只有几毫秒执行时间的状况下。系统上运行的其余进程可能会致使结果误差。更好的方法是让被测试的代码在单位时间(如1秒)内循环运行,而后统计单位时间内完成的循环次数来评价代码性能,能够重复测试来获取均值或中值。这些测试会运行相同的时间,更优的代码会完成更多的循环。javascript

 

常见的单次执行式的测试方法:css

var startTime = new Date().getTime();

//在这里执行代码

runtest();

var timeElapsed = new Date().getTime() - startTime; //执行代码消耗的时间

 

单位时间循环执行式的测试方法:html

var startTime = new Date().getTime(), count, timeElapsed;

for(count = 0, timeElapsed = 0; timeElapsed < 1000; count++){

  //在这里执行代码

  test();

  timeElapsed = new Date().getTime() - startTime;

}

//最终count为循环执行的次数

 

好比测试 Math.random()*255>>0 和  parseInt(Math.random()*255),这两个都是对数值取整,一般在设置随机颜色(rgb(255,255,255))时会用到,“>>”是算术位右移,能够去掉小数部分。java

编写以下测试代码:app

<!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次的结果:dom

测试Math.random()*255>>0 的结果性能

4359444
4339976
4324491
4218870
4339112测试

测试parseInt(Math.random()*255)的结果大数据

3619779
3713368
3639922
3629729
3661628spa

能够看出第一种方法比第二种更快,在大数据量处理状况下,选择第一种更好。

相关文章
相关标签/搜索