Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中计算循环内部花费的时间_Javascript_Performance - Fatal编程技术网

在javascript中计算循环内部花费的时间

在javascript中计算循环内部花费的时间,javascript,performance,Javascript,Performance,如何在javascript中检查特定循环内花费的秒数(或毫秒)。 我有一个用javascript实现的排序算法,现在我使用冒泡排序,我想使用快速排序。 我知道在时间效率方面,快速排序是好的。但是我想计算在最里面的循环中花费的秒或毫秒的实际数量。 如何使用javascript 最简单的方法是按日期进行比较 var old_time = new Date(); ... var new_time = new Date(); var seconds_passed = new_time - old_tim

如何在javascript中检查特定循环内花费的秒数(或毫秒)。 我有一个用javascript实现的排序算法,现在我使用冒泡排序,我想使用快速排序。 我知道在时间效率方面,快速排序是好的。但是我想计算在最里面的循环中花费的秒或毫秒的实际数量。
如何使用javascript

最简单的方法是按日期进行比较

var old_time = new Date();
...
var new_time = new Date();
var seconds_passed = new_time - old_time;

顺便说一句,为什么不使用内置的
.sort()
()方法呢?

在大多数浏览器上,时间不是很精确,您可以预期大约15毫秒的误差幅度:

var start = (new Date).getTime();
/* Your code. */
var diff = (new Date).getTime() - start;
建议阅读:


其他人已经回答了如何进行时间计算,因此我将回答您的评论:“我正在对对象数组进行排序,根据对象的一个属性进行排序。因此无法使用内置排序。”

事实并非如此,您仍然可以使用内置排序:

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 });
var arr=[{text:'test',id:2},{text:'abc',id:6},{text:'xyz',id:4}];
arr.sort(函数(x,y){返回x.text>y.text-1:x.text
如果您使用的是Firebug,您可以

console.time('someNameHere');
// Do things here
console.timeEnd('someNameHere');
此线程中的所有其他答案都是旧的。 现在就用这个,这是标准的


好的,谢谢,我没有对数字进行排序,我是对对象数组进行排序,我根据对象的一个属性进行排序。所以我不能使用内置排序。值得记住的是,Date对象并不是非常精确。John Resig为此写了一篇文章:。@sat:sort方法允许您指定一个
比较函数
,该函数允许您完全按照自己的要求进行操作(无需启动并创建自己的排序方法)。请参阅:了解更多信息。此答案已过时。检查我下面的完整答案。那么在上面的代码中,它比较了两个对象的文本属性?内部使用什么algo?这意味着它会比较每一个对象还是一些更好的算法?@sat:对于Firefox,合并排序。这是用来代替快速排序,以确保排序顺序稳定。请参阅。@David:
arr.sort(函数(x,y){返回x.text>y.text?1:x.text
@Kenny谢谢你提供的好信息。你可以通过简单的问题学到很多东西。这是一篇非常好的文章!!谢谢除了所有的答案之外,我在firebug中发现的另一个有用的功能是“计时和分析”,它有助于确定JavaScript性能。
var t0 = performance.now();
doSomething();
var t1 = performance.now();
console.log("Call to doSomething took " + (t1 - t0) + " milliseconds.")