如何比较两个Javascript函数的速度
How do I compare the speed of two Javascript functions?
我有一些Javascript正在读取一些XML。有一个旧函数用于根据该数据创建JSON对象,我已经编写了一个新函数,希望它能更快地创建JSON对象。确定哪个功能执行得更快的最简单、最好的方法是什么?这是一个相当多的数据,所以知道这一点有点重要。谢谢
您可以使用console.time("ID");
和console.timeEnd("ID");
(此处信息),并在Chrome Developer Tools或Firebug中查看结果,如下所示:
console.time("oldFunc");
//oldfunc();
console.timeEnd("oldFunc");
console.time("newfunc");
//newfunc();
console.timeEnd("newfunc");
此外,您还可以使用jsperf
关于这个的一些信息和这里的代码示例
var startDate = new Date();
// execute your tasks here
var endDate = new Date();
var timeTaken = endDate.getTime() - startDate.getTime();
alert('Time take to execute the script is '+timeTaken+' milliseconds');
(new Date).getTime();
这就是获取当前时间(以毫秒为单位)的方法。在执行代码之前和之后执行,减去,执行时间以毫秒为单位。
样品:
var start=(new Date).getTime();
//call your code
alert('Code took '+((new Date).getTime()-start)+'ms');
如果您的代码组织允许,您可以在for循环中进行调用,重复n次(假设为1000次),最后将时间除以n。
这样你就可以获得平均速度,如果你的功能变化很大(比如网络通话),这尤其有帮助。
我喜欢John Resigs测试函数性能的方法:
function runTest(name, test, next){
var runs = [], r = 0;
setTimeout(function(){
var start = Date.now(), diff = 0;
for ( var n = 0; diff < 1000; n++ ) {
test();
diff = Date.now() - start;
}
runs.push( n );
if ( r++ < 4 )
setTimeout( arguments.callee, 0 );
else {
done(name, runs);
if ( next )
setTimeout( next, 0 );
}
}, 0);
}
这是在浏览器中还是在服务器端?
如果是服务器端,我建议使用您选择的shell脚本工具来进行基准测试(linux有time
,windows有……无论windows有什么)。
如果它在浏览器中,那么你总是可以将一定数量的迭代(通常10000次就足够了)包装在:中
var start = new Date.getTime();
var runs = 10000;
while (runs) {
// do stuff here
runs--;
}
console.log('Finished in ' + (new Date.getTime() - start) + ' ms.');
var d1 = new Date();
function1();
var d2 = new Date();
console.log("Function 1 : ", d2.getTime() - d1.getTime());
function2();
var d3 = new Date();
console.log("Function 2 : ", d3.getTime() - d2.getTime());
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在全局范围中查找JavaScript函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 如何调用这个匿名 JavaScript 函数
- 通过Ajax将JavaScript函数传递给PHP文件
- 在javascript函数中设置全局变量
- 如何在执行此特定onclick事件时执行JavaScript函数
- 使用javascript函数在页面初始化后加载jquery
- javascript函数同步
- 如何将一个JavaScript函数回调为多个函数
- 在javascript函数中使用php变量
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 将JavaScript函数与HTML分离
- 组合两个javascript函数
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- javascript函数内部的代码用逗号而不是分号分隔
- href属性内的javascript函数
- 使用html表单中的参数调用JavaScript函数
- 分析Javascript函数中的多个对象
- javascript函数的:和=之间的区别