如何计算函数在jQuery中花费的时间?

时间:2011-09-06 01:38:52

标签: javascript jquery ajax

我有jQuery函数;例如A(),B()和C() 每个函数都会对不同的站点进行一些Ajax调用。

我想计算运行每个函数所花费的时间(我想以毫秒为单位) 我只想在长循环和不同的现代浏览器(Safari / Chrome / IE10 / Mozilla)中测试我的代码。 更具体地说,我想计算从每个Ajax请求中获取回调所花费的时间(这也是函数结束的时间吗?) 我怎么能实现这个目标?

6 个答案:

答案 0 :(得分:18)

您可以从日期对象中获取以毫秒为单位的时间。

var start = new Date().getTime();

A();

function AJAXSuccessFunction() {
    console.log(new Date().getTime() - start);
}

答案 1 :(得分:6)

//set start point anywhere you want
var start = new Date(); 
//when done,
var end = new Date();

//to profile milliseconds, just do 
var duration = end - start;

答案 2 :(得分:3)

Nowadays,您可以使用perfomance.now()。此函数使用navigationStart属性作为开始时间;

  

此属性必须在用户代理之后立即返回时间   完成提示卸载以前的文档。如果没有   在以前的文档中,此属性必须返回相同的值   fetchStart。

至于现实生活中的代码示例:

// Store the start
var start = performance.now();

// Do some operation
for(var i=0; i < 1000; i++) {
    var j = i*i;
}

// Profile the milliseconds it took to do the job
var duration = (performance.now() - start);

答案 3 :(得分:2)

我不知道这是否是您正在寻找的内容,但如果您想知道处理功能所花费的时间,您可以使用Chrome的DevTools(或类似的工具)其他浏览器)检查。

转到要检查的页面,打开DevTools,转到Profiles标签,然后选择“收集Javascript CPU配置文件&#39;并点击Start开始录制。

刷新页面,完成加载后,Stop录制。您将获得已执行的函数列表以及处理它所花费的时间。

Sample Screenshot of Profiles Tab in Dev Tools

希望有所帮助。

答案 4 :(得分:1)

您现在可以使用,console.time('fn1')和console.timeEnd('fn1')

因此,如果您正在调用doAwesomeStuff()之类的函数,并希望看到执行它需要多长时间,

console.time('fn1')
doAwesomeStuff()
console.timeEnd('fn1')

fn1 - 可以是任何东西。

答案 5 :(得分:0)

您可以更精确地使用performance.now()

&#13;
&#13;
// Take a timestamp at the beginning.
var start = performance.now();

// Execute the code being timed.
console.log("your function is here")

// Take a final timestamp.
var end = performance.now();

// Calculate the time taken and output the result in the console
console.log('doTasks took ' + (end - start) + ' milliseconds to execute.');
&#13;
&#13;
&#13;