2016-06-23 51 views
0

看到控制台的时刻变化的每个我不一次知道为什么为什么执行相同的javascript代码所花费的时间变化

我试图执行一个功能并获得通过它拍摄的时候,我已经使用控制台.time(),但每当我运行它时显示不同的时间 还有一件事,下划线花费的时间比正常的执行时间多。

function map(){ 
 
\t \t 
 
\t \t console.time('mycode'); 
 
\t \t 
 
\t \t 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]; 
 
\t \t var result = []; 
 
\t \t var constant = 3; 
 
\t \t var length = arr.length; //will avoid calculation of length each time 
 
\t \t for(i=0;i<length;i++){ 
 
\t \t \t temp = arr[i] * constant; 
 
\t \t \t result.push(temp); 
 
\t \t } 
 
\t \t 
 
\t \t console.timeEnd('mycode'); 
 
\t \t 
 
\t \t console.time('mycode1'); 
 
\t \t 
 
\t \t var underscore = _.map([arr], function(num){ return num * 3; }); 
 
\t \t 
 
\t \t console.timeEnd('mycode1'); 
 
\t } 
 
\t 
 
\t function where(){ 
 
\t \t 
 
\t \t console.time("myCode"); 
 
\t \t var arr = [{title: "Cymbeline", author: "Shakespeare", year: 1611}, 
 
\t \t \t 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1613}, 
 
\t \t \t {title: "The Tempest", author: "Shakespeare", year: 1615} 
 
\t \t ]; 
 
\t \t var author = 'Shakespeare'; 
 
\t \t var year = '1611'; 
 
\t \t var result = []; 
 
\t \t var length = arr.length; //will avoid calculation of length each time 
 
\t \t for(i=0;i<length;i++){ //you know that and takes more time than or statement 
 
\t \t \t if(arr[i]['author'] == author && arr[i]['year'] == year){ 
 
\t \t \t \t result.push(arr[i]); 
 
\t \t \t } 
 
\t \t } 
 
\t \t console.log(result) 
 
\t \t console.timeEnd("myCode"); 
 
\t \t 
 
\t \t console.time("myCode1"); 
 
\t \t var underscore = _.filter(arr, {author: "Shakespeare", year: 1611}); 
 
\t \t 
 
\t \t console.log(underscore) 
 
\t \t console.timeEnd("myCode1"); 
 
\t }
.container{ 
 
\t \t width:calc(100% - 200px); 
 
\t \t text-align:center; 
 
\t \t margin:0 auto; 
 
\t \t background:#f4f4f4; 
 
\t }
<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'> 
 

+0

为什么你有一个期望,它会保持不变?电脑不稳定,时间总是会有所不同,至少有一点点。 –

+0

如果它变得至少有点它的好,但有时它会给出1.565ms,有时.056毫秒..这不是一个微小的差异正确 –

回答

1

到由于正被你的CPU进行其他工作执行代码会有所不同的时间。由于计算机上运行的其他进程,中断不断发生。您的Web应用程序只是许多需要一定CPU时间的应用程序之一。还有一些因素,例如CPU针对频繁请求的数据执行的高速缓存以及操作系统高速缓存。

+0

我满意你的答案,但你能解释为什么下划线需要比正常执行更多的时间,并在控制台窗口中打印结果时,条件反转 –

+0

@Karthikeyansundaramoorthi下划线'_map'函数符合函数式编程原则,因为它不会对传入的数组产生任何副作用,而是将转换函数应用于每个函数元素并返回一个新的数组。产生这种行为的底层代码更复杂,涉及更多的内存和处理。您可以使用'_each'来获得更快的性能,但这会产生副作用。 –

+0

谢谢你吉迪恩 –

相关问题