2010-07-06 11 views
6

मैं जावा क्लास में कथन ए से स्टेटमेंट बी तक जाने के लिए समय लेना चाहता हूं। इन बयानों के बीच कई वेब सेवा कॉल की गई हैं। मैं जानना चाहता था कि जावा में कार्यक्षमता की तरह कुछ स्टॉप घड़ी है कि मैं सही समय पर कब्जा करने के लिए उपयोग कर सकता हूं?2 कथन जावा के बीच निष्पादन समय को कैप्चर करना?

Kaddy

+0

क्या आपको कुछ और सटीक चाहिए मिलीसेकेंड? यदि नहीं, System.currentTimeMillis() को करना चाहिए - इसे शुरुआत में कॉल करें, इसे अंत में कॉल करें, और घटाएं। –

+1

मैं पढ़ने का सुझाव देता हूं [केविन के जवाब 'नैनोटाइम() '] (http://stackoverflow.com/questions/1770010/how-do-i-measure-time-elapsed-in-java/1776053#1776053) के बारे में। –

उत्तर

12

यह आपको दो nanoTime() कॉल के बीच नैनोसेकंड की संख्या दे देंगे।

long start = System.nanoTime(); 
// Java statements 
long diff = System.nanoTime() - start; 

और अधिक परिष्कृत दृष्टिकोण के लिए वहाँ कई नकली सवाल है कि स्टॉपवॉच वर्गों को संबोधित कर रहे हैं:

0

System.currentTimeMillis मिलीसेकेंड और nanoTime में यह मिल जाएगा नैनोसेकंड में।

यदि आप विभिन्न तकनीकों के प्रदर्शन की तुलना करने की कोशिश कर रहे हैं, तो ध्यान दें कि JVM वातावरण जटिल है इसलिए बस एक समय लेना सार्थक नहीं है। मैं हमेशा एक लूप लिखता हूं जहां मैं विधि 1 को कुछ हज़ार बार निष्पादित करता हूं, फिर System.gc करें, फिर विधि 2 को कुछ हजार बार निष्पादित करें, फिर एक और System.gc करें, फिर वापस लूप करें और पूरी चीज़ को कम से कम पांच करें या छह बार। यह कचरा संग्रह, समय-समय पर संकलन, और जेवीएम में होने वाली अन्य जादू की चीजों के लिए समय निकालने में मदद करता है।

2

@ बेन एस का जवाब स्पॉट पर है।

हालांकि, यह ध्यान दिया जाना चाहिए कि डालने समय माप बयान के दृष्टिकोण अपने कोड में बड़े पैमाने नहीं करता है:

  • यह अपने कोड एक गड़बड़ लग रही बनाता है।
  • यह आपके एप्लिकेशन को धीमा कर देता है। System.nanoTime() पर कॉल करने वालों को मुफ्त में नहीं आना चाहिए!
  • यह बग की संभावना का परिचय देता है।

यदि आपका असली उद्देश्य कोशिश करना और काम करना है कि आपका एप्लिकेशन धीरे-धीरे क्यों चल रहा है ताकि आप तय कर सकें कि क्या अनुकूलित करना है, तो एक बेहतर समाधान जावा प्रोफाइलर का उपयोग करना है। इसका लाभ यह है कि आपको अपने स्रोत कोड में शून्य परिवर्तन करने की आवश्यकता है। (बेशक, प्रोफाइलिंग आपको विशेष वर्गों में बिताए गए सटीक समय नहीं देती है। बल्कि, यह आपको समय अनुपात देता है ... जो कि अनुकूलित करने का निर्णय लेने के लिए कहीं अधिक उपयोगी है।)

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