2011-09-06 9 views
9

मेरे पास jQuery फ़ंक्शन हैं; उदाहरण ए(), बी() और सी() प्रत्येक फ़ंक्शन कुछ अजाक्स को विभिन्न साइटों पर कॉल करता है।मैं कैसे गणना कर सकता हूं कि jQuery में फ़ंक्शन कितना समय लगता है?

मैं गणना करना चाहता हूं कि प्रत्येक फ़ंक्शन को चलाने के लिए कितना समय लगता है (मुझे मिलीसेकंड में लगता है) मैं बस लंबे लूप और विभिन्न आधुनिक ब्राउज़रों (सफारी/क्रोम/आईई 10/मोज़िला) में अपने कोड का परीक्षण करना चाहता हूं। अधिक विशेष रूप से, मैं गणना करना चाहता हूं कि प्रत्येक अजाक्स अनुरोध से कॉलबैक लेने में कितना समय लगता है (यह वह समय भी है जब फ़ंक्शन सही समाप्त होता है?) मैं इसे कैसे प्राप्त कर सकता हूं?

+0

नहीं, एक फ़ंक्शन समाप्त होने का समय कॉलबैक आग के समान नहीं होता है, जब तक आप सिंक्रोनस AJAX कॉल का उपयोग नहीं कर लेते। – icktoofay

+0

कई ब्राउज़रों में वेब डेवलपर टूल हैं जो आपके AJAX अनुरोधों की निगरानी करेंगे और आपको बताएंगे कि उन्होंने कितना समय लिया। –

+0

तो अजाक्स कॉल के समय के बराबर एक चर सेट करें और फिर कॉलबैक फ़ंक्शन में उस चर की तुलना वर्तमान समय से करें। – nnnnnn

उत्तर

18

आप तिथि वस्तु से मिलीसेकंड में समय प्राप्त कर सकते हैं।

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, आप 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); 
1

अब आप उपयोग कर सकते हैं, console.time ('fn1') और console.timeEnd ('fn1')

तो अगर आप doAwesomeStuff (जैसे एक समारोह बुला रहे हैं) और देखने के लिए कितना समय यह यह सिर्फ कर निष्पादित करने के लिए ले जाता है चाहता हूँ,

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

fn1 - कुछ भी हो सकता है।

+0

यह वही है जो मैं अनुशंसा करता हूं। ऐसा समय करने का यह सबसे आसान तरीका है। हालांकि, प्रदर्शन एपीआई भी बहुत प्यारी है। – frosty

0

आप उपयोग कर सकते हैं अधिक सटीक 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

यदि यह आप जो खोज रहे हैं, लेकिन अगर आप कितना समय जानना चाहता हूँ एक प्रसंस्करण खर्च किया गया था है मैं नहीं जानता फ़ंक्शन, आप इसे जांचने के लिए क्रोम के DevTools (या अन्य ब्राउज़रों में समान टूल) का उपयोग कर सकते हैं।

उस पृष्ठ पर जाएं जिसे आप जांचना चाहते हैं, DevTools खोलें, Profiles टैब पर जाएं और 'जावास्क्रिप्ट सीपीयू प्रोफाइल लीजिए' चुनें और रिकॉर्डिंग शुरू करने के लिए Start दबाएं।

अपने पृष्ठ को रीफ्रेश करें और जब यह लोड हो गया है, Stop रिकॉर्डिंग। आपको निष्पादित किए गए कार्यों और उस समय की एक सूची मिल जाएगी जो इसे संसाधित करने में व्यतीत थी।

Sample Screenshot of Profiles Tab in Dev Tools

आशा है कि मदद करता है।

संबंधित मुद्दे