为什么执行相同 javascript 代码所花费的时间不同

why the time taken to execute same javascript code varies

看Console每次时间都不一样不知道为什么

我正在尝试执行一个函数并获取它所花费的时间,我使用了 console.time(),但是每次我 运行 时它都显示不同的时间 还有一件事,下划线花费的时间是否超过正常执行时间。

function map(){
  
  console.time('mycode');
  
  var arr = [234345345,345346,5445645,456456,456456,234,467,234234234,456,43535,456,12,3123123123,456,456456,1231235,6456456,234,234456,4,5632452344,65,543452334124436,2345,345346,5445645,456456,456456,234,467,234234234,456,43535,456,12,3123123123,456,456456,1231235,6456456,234,234456,4,5632452344,65,543452334124436,2345,345346,5445645,456456,456456,234,467,234234234,456,43535,456,12,3123123123,456,456456,1231235,6456456,234,234456,4,5632452344,65,543452334124436,2345,345346,5445645,456456,456456,234,467,234234234,456,43535,456,12,3123123123,456,456456,1231235,6456456,234,234456,4,5632452344,65,543452334124436,2345,345346,5445645,456456,456456,234,467,234234234,456,43535,456,12,3123123123,456,456456,1231235,6456456,234,234456,4,5632452344,65,543452334124436,2345,345346,5445645,456456,456456,234,467,234234234,456,43535,456,12,3123123123,456,456456,1231235,6456456,234,234456,4,5632452344,65,543452334124436,2345,345346,5445645,456456,456456,234,467,234234234,456,43535,456,12,3123123123,456,456456,1231235,6456456,234,234456,4,5632452344,65,543452334124436,2345,345346,5445645,456456,456456,234,467,234234234,456,43535,456,12,3123123123,456,456456,1231235,6456456,234,234456,4,5632452344,65,543452334124436,2345,345346,5445645,456456,456456,234,467,234234234,456,43535,456,12,3123123123,456,456456,1231235,6456456,234,234456,4,5632452344,65,543452334124436,2345,345346,5445645,456456,456456,234,467,234234234,456,43535,456,12,3123123123,456,456456,1231235,6456456,234,234456,4,5632452344,65,543452334124436,2345,345346,5445645,456456,456456,234,467,234234234,456,43535,456,12,3123123123,456,456456,1231235,6456456,234,234456,4,5632452344,65,543452334124436,2345,345346,5445645,456456,456456,234,467,234234234,456,43535,456,12,3123123123,456,456456,1231235,6456456,234,234456,4,5632452344,65,543452334124436,2345,345346,5445645,456456,456456,234,467,234234234,456,43535,456,12,3123123123,456,456456,1231235,6456456,234,234456,4,5632452344,65,543452334124436,2345,345346,5445645,456456,456456,234,467,234234234,456,43535,456,12,3123123123,456,456456,1231235,6456456,234,234456,4,5632452344,65,543452334124436,2345,345346,2345];
  var result = [];
  var constant = 3;
  var length = arr.length; //will avoid calculation of length each time
  for(i=0;i<length;i++){
   temp = arr[i] * constant;
   result.push(temp);
  }
  
  console.timeEnd('mycode');
  
  console.time('mycode1');
  
  var underscore = _.map([arr], function(num){ return num * 3; });
  
  console.timeEnd('mycode1');
 }
 
 function where(){
  
  console.time("myCode");
  var arr =  [{title: "Cymbeline", author: "Shakespeare", year: 1611},
   
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615},
   {title: "The Tempest", author: "Shakespeare", year: 1613},
   {title: "The Tempest", author: "Shakespeare", year: 1615}
  ];
  var author = 'Shakespeare';
  var year = '1611';
  var result = [];
  var length = arr.length; //will avoid calculation of length each time
  for(i=0;i<length;i++){ //you know that and takes more time than or statement
   if(arr[i]['author'] == author && arr[i]['year'] == year){
    result.push(arr[i]);
   }
  }
  console.log(result)
  console.timeEnd("myCode");
  
  console.time("myCode1");
  var underscore = _.filter(arr, {author: "Shakespeare", year: 1611});
  
  console.log(underscore)
  console.timeEnd("myCode1");
 }
.container{
  width:calc(100% - 200px);
  text-align:center;
  margin:0 auto;
  background:#f4f4f4;
 }
<script src="http://underscorejs.org/underscore-min.js"></script>

<h1>Evaluating time </h1>
<input type='button' onclick='map()' value='Execute'>
<input type='button' onclick='where()' value='Execute'>
  

执行代码所需的时间会因您的 CPU 执行的其他工作而异。由于计算机上的其他进程运行,中断不断发生。您的 Web 应用程序只是众多需要 CPU 时间的应用程序之一。还有一些因素,例如 CPU 对频繁请求的数据执行的缓存,以及 OS 缓存。