2012-08-24 49 views
0

我试图找出捕捉语句执行时间的最佳方法。例如,js stmt花费的时间如if(txt =='abc')。如果我使用console.time('test')/ console.endTime('test')对来计算或简单的js代码(下面给出)来计算每次执行代码时控制台输出不同的时间。JavaScript的执行时间各不相同

在控制台上看到的差异有时也是1位数字,2位数字到3位数字,以毫秒为单位,即某些时间1毫秒,60毫秒&有时800毫秒的顺序不一致。我甚至试图只运行一次&关闭浏览器&再次运行它,以便其他GC &变量不会影响时间,但结果是相同的。几毫米是undestandle,但如此巨大的差异很大,以获得明确的时间。那么究竟是什么才是最好的解决方法来获得时间的一致方式。我们如何能找到最好的准绳,以证明写在特定的方式时或者最好使用

var start = (new Date).getMilliseconds(); 
if(txt =='abc'){}; 
var diff = (new Date).getMilliseconds() - start; 
console.log(diff); 

* 所有的测试都在FF进行哪些语句执行得更好。也有不同的方法,例如getMilliseconds,的getTime & console.endTime其他*

+0

您可能会发现从http://stackoverflow.com/questions/2140716/how-to-profile-and-and一些帮助-get-javascript-performance –

+0

单个if语句将需要不可测量的时间量。它取决于调度程序执行是否暂停,以及其他一些计算(UI线程,垃圾回收等)将在继续之前发生... – Bergi

+0

使用类似[jsperf](http://jsperf.com)的工具。 – Sirko

回答

1

呃..你使用的两种截然不同的功能检索当前时间戳后拍摄第一。

Date.prototype.getMilliseconds() 

返回比

Date.prototype.getTime() 

另一个(短)号码,以便不是一般一个好主意,是最有可能对你的问题的原因。如果您想测量代码内容,则应该始终使用.getTime()或更好的Date.now()。两者都返回一个完整的时间戳编号。

+0

无论你每次运行或尝试都不重要关闭浏览器的测试结果变化很大,甚至没有遵循任何模式 – user593029

+0

它很重要。仅仅因为使用mixins这两种方法,它永远无法正常工作。 – jAndy

+0

他们被一个接一个地尝试在mixin已经进入图片 – user593029

0

这里的要点是执行这条指令的时间在大多数情况下远远小于0ms,所以我不明白你为什么会得到这些差异。如果我在我的机器上运行:

for (x = 0; x < 100; x++) {      
    var start = (new Date).getMilliseconds(); 
    if(txt =='abc'){}; 
    var diff = (new Date).getMilliseconds() - start; 
    print(diff); 
} 

我得到:

0 
0 
0 
0 
... 
相关问题