如何检查在javascript中特定循环内花费的秒数(或毫秒数)。 我在javascript中实现了一个排序算法,现在我正在使用冒泡排序,我想使用快速排序。 我知道在时间效率方面,快速排序是好的。但我想计算在最内层循环内真正花费的秒数或毫秒数。 我该怎么做呢?
如何检查在javascript中特定循环内花费的秒数(或毫秒数)。 我在javascript中实现了一个排序算法,现在我正在使用冒泡排序,我想使用快速排序。 我知道在时间效率方面,快速排序是好的。但我想计算在最内层循环内真正花费的秒数或毫秒数。 我该怎么做呢?
现在使用这个,它是标准的https://developer.mozilla.org/zh-CN/docs/Web/API/Performance.now
var t0 = performance.now();
doSomething();
var t1 = performance.now();
console.log("Call to doSomething took " + (t1 - t0) + " milliseconds.")
var old_time = new Date();
...
var new_time = new Date();
var seconds_passed = new_time - old_time;
顺便问一下,为什么不直接使用内置的.sort()
(https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/sort) 方法呢?
大多数浏览器上的时间并不是非常准确,您可以预期误差约为15毫秒:
var start = (new Date).getTime();
/* Your code. */
var diff = (new Date).getTime() - start;
推荐阅读:
console.time('someNameHere');
// Do things here
console.timeEnd('someNameHere');
其他人已经回答了如何进行时间计算,所以我将回复您的评论:“我正在对对象数组进行排序,其中根据对象的某个属性进行排序。因此,我不能使用内置排序。”
这完全不是真的,您仍然可以使用内置排序:
var arr = [{ text: 'test', id: 2 }, { text: 'abc', id: 6 }, { text: 'xyz', id: 4 }];
arr.sort(function(x,y) { return x.text > y.text ? 1 : x.text < y.text ? -1 : 0 });
arr.sort(function(x,y) { return x.text > y.text ? 1 : x.text < y.text ? -1 : 0 });
。 - kennytm