2012-04-18 7 views
6

मैं निम्नलिखित कोड है कि इस प्रक्रिया के लिए कुछ समय लग रहा है:मैं आईओएस के लिए उद्देश्य-सी में कोड की दो पंक्तियों के बीच कितना समय ले सकता हूं?

self.itemsArray = [Helper changeTheA:self.itemsArray]; 
self.itemsArray = [Helper convertDates:self.itemsArray]; 

वहाँ एक रास्ता कहीं और है या उपकरण में, कि मैं समय है करने के लिए कोड की पहली पंक्ति से जाने के लिए ले जाता है माप सकते हैं कोड की दूसरी पंक्ति .... टिक या मिलीसेकंड या कुछ में?

मैं कुछ tweaking करना चाहता हूं, लेकिन मुझे यह देखने के लिए मापने में सक्षम होना चाहिए कि मैं पिछले कोड में सुधार कर रहा हूं या नहीं।

धन्यवाद।

उत्तर

6

तेज, गंदे, संभवतः बहुत ही सटीक नहीं जिस तरह से

NSDate *startDate = [NSDate date]; 

self.itemsArray = [Helper changeTheA:self.itemsArray]; 

NSLog(@"changeTheA time taken: %f", -[startDate timeIntervalSinceNow]); 

एक थोड़ा और अधिक शामिल हैं लेकिन शायद अधिक उपयोगी समाधान, आप कुछ बुनियादी रूपरेखा कर रहे हैं here देखा जा सकता है, यह एक सी समारोह है कि एक कार्यान्वित का उपयोग करता है ब्लॉक प्रदान करते हैं।


बिग ओर टिप्पणी

जस्टिन एक NSDate बनाने और फिर इसे लॉग आउट अपने माप के लिए हस्तक्षेप का परिचय देंगे और इसलिए इस तकनीक केवल वास्तव में गेंद पार्क आंकड़े प्राप्त करने के लिए किसी भी अच्छा है की वास्तविक कार्य बताते हैं के रूप में और फिर भी आपको समय सीमा के भीतर अपने कोड की पुनरावृत्ति की बड़ी मात्रा में भाग लेना चाहिए। यदि आपको सटीक माप की आवश्यकता है तो जस्टिन के उत्तर

+0

@ जस्टिन मैं आम तौर पर केवल उस लक्ष्य कोड के साथ इसका उपयोग करता हूं जो बड़ी संख्या में लूप किया जाता है (उदाहरण के लिए मैं पुनरावृत्तियों को बढ़ाता रहूंगा जब तक कि मुझे कुछ ऐसा न हो जो मापने योग्य अंतर दिखाएगा) और मुझे केवल बॉल पार्क के आंकड़े चाहिए। –

+0

* समय सीमा से परे संपादित करें - शीर्ष पोस्ट * की तरह पढ़ा जाएगा: यह अपेक्षाकृत धीमी और गलत है। कई अनुप्रयोगों के लिए, यह बहुत अधिक हस्तक्षेप है। – justin

+0

यह स्पष्ट करने के लिए अच्छा है कि – justin

6

हां पर जाएं। आप इसके लिए इंस्ट्रूमेंट्स नमूने का उपयोग करेंगे।

एप्लिकेशन चलाएं, थोड़ी देर के लिए कार्यक्रम का प्रयोग है, तो उपकरण में प्रतीक जिसमें पता लगाने:

self.itemsArray = [Helper changeTheA:self.itemsArray]; 
self.itemsArray = [Helper convertDates:self.itemsArray]; 

यह लाइन द्वारा वजन लाइन दिखाना चाहिए। यह भी ध्यान रखें कि उपकरण आपको 40 माइक्रोसॉन्ड तक नमूना आवृत्ति निर्दिष्ट करने की अनुमति देता है।

NSTimeInterval start = CACurrentMediaTime(); 

// your code goes here 

NSTimeInterval end = CACurrentMediaTime(); 
NSTimeInterval delta = end - start; 
NSLog(@"Execution took %f seconds.", delta); 

यह NSDate तुलना में अधिक सटीक एक बहुत है:

2

मैं निम्नलिखित कोड का प्रयोग करेंगे।

+0

कोड शुरू और अंत के बीच होने की आवश्यकता नहीं है? – s1m0n

+1

महाकाव्य विफल। संपादित। –

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

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