2011-09-06 59 views
9

Tôi có các chức năng jQuery; ví dụ: A(), B() và C() Mỗi chức năng thực hiện một số cuộc gọi Ajax đến các trang web khác nhau.Làm cách nào tôi có thể tính toán thời gian một hàm trong jQuery?

Tôi muốn tính toán mất bao nhiêu thời gian để chạy từng hàm (tôi đoán bằng mili giây) Tôi chỉ muốn kiểm tra mã của mình trong các vòng lặp dài và trong các trình duyệt hiện đại khác nhau (Safari/Chrome/IE10/Mozilla). Cụ thể hơn, tôi muốn tính toán mất bao nhiêu thời gian để nhận một cuộc gọi lại từ mỗi yêu cầu Ajax (đây cũng là lúc mà hàm kết thúc phải không?) Làm thế nào tôi có thể đạt được điều này?

+0

Không, thời gian một chức năng kết thúc không phải là thời điểm một lần gọi lại, trừ khi bạn đang sử dụng các cuộc gọi AJAX đồng bộ. – icktoofay

+0

nhiều trình duyệt có công cụ dành cho nhà phát triển web sẽ giám sát các yêu cầu AJAX của bạn và cho bạn biết họ đã mất bao lâu. –

+0

Vì vậy, thiết lập một biến bằng thời gian của cuộc gọi Ajax và sau đó trong chức năng gọi lại so sánh biến đó với thời gian hiện tại. – nnnnnn

Trả lời

18

Bạn có thể nhận được thời gian tính bằng mili giây từ đối tượng ngày.

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

A(); 

function AJAXSuccessFunction() { 
    console.log(new Date().getTime() - start); 
} 
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; 
3

Nowadays, bạn có thể sử dụng perfomance.now(). Hàm này sử dụng thuộc tính navigationStart làm thời gian bắt đầu;

Thuộc tính này phải trả lại thời gian ngay sau khi tác nhân người dùng hoàn tất nhắc tải xuống tài liệu trước đó. Nếu không có tài liệu trước đây , thuộc tính này phải trả lại cùng một giá trị như fetchStart.

Đối với một ví dụ mã thực tế đời sống:

// 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); 
1

Bây giờ bạn có thể sử dụng, console.time ('ct1') và console.timeEnd ('ct1')

Vì vậy, nếu bạn đang gọi một hàm như doAwesomeStuff() và muốn xem phải mất bao nhiêu thời gian để thực hiện nó,

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

fn1 - có thể là bất kỳ thứ gì.

+0

Đây là những gì tôi đề nghị. Đây là cách dễ nhất để thực hiện thời gian đó. Tuy nhiên, API hiệu suất cũng khá ngọt ngào. – frosty

0

Bạn có thể sử dụng một cách chính xác hơn performance.now()

// 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.');

1

Tôi không biết nếu điều này là những gì bạn đang tìm kiếm nhưng nếu bạn muốn biết bao nhiêu thời gian đã được chi cho xử lý một , bạn có thể sử dụng DevTools của Chrome (hoặc các công cụ tương tự trong các trình duyệt khác) để kiểm tra điều đó.

Chuyển đến trang bạn muốn kiểm tra, mở DevTools, chuyển đến tab Profiles và chọn 'Thu thập cấu hình CPU Javascript' và nhấn Start để bắt đầu quay.

Làm mới trang của bạn và khi trang đã tải xong, Stop bản ghi. Bạn sẽ nhận được một danh sách các hàm được thực hiện và thời gian đã được xử lý nó.

Sample Screenshot of Profiles Tab in Dev Tools

Hy vọng điều đó sẽ hữu ích.

Các vấn đề liên quan