मुझे दो घटनाओं के बीच समाप्त होने वाला समय प्राप्त करने की आवश्यकता है: उदाहरण के लिए UIView की उपस्थिति और उपयोगकर्ता की पहली प्रतिक्रिया के बीच।समय बीतने (उद्देश्य-सी)
उत्तर
NSDate *start = [NSDate date];
// do stuff...
NSTimeInterval timeInterval = [start timeIntervalSinceNow];
timeInterval
प्रारंभ और बीच का अंतर है अब, सेकंड, उप millisecond परिशुद्धता के साथ में।
नीचे की तरह NSDate वर्ग के timeIntervalSince1970 समारोह का उपयोग करें:
double start = [startDate timeIntervalSince1970];
double end = [endDate timeIntervalSince1970];
double difference = end - start;
मूल रूप से, यह क्या मैं 2 अलग तिथियों के बीच सेकंड में अंतर की तुलना करने का उपयोग करें। भी इस लिंक here
percise समय माप के लिए (GetTickCount की तरह) की जाँच, यह भी mach_absolute_time पर एक नज़र है और इस एप्पल क्यू & एक ले: http://developer.apple.com/qa/qa2004/qa1398.html।
timeIntervalSinceDate
विधि
NSTimeInterval secondsElapsed = [secondDate timeIntervalSinceDate:firstDate];
NSTimeInterval
सिर्फ एक double
है का उपयोग करें, इस तरह NSDate
में परिभाषित:
typedef double NSTimeInterval;
किसी को यहाँ आने से iOS के लिए एक getTickCount() लागू करने के लिए की तलाश में के लिए, यहाँ है विभिन्न स्रोतों को एक साथ रखने के बाद मेरा:
#include <mach/mach.h>
#include <mach/mach_time.h>
uint64_t getTickCount(void)
{
static mach_timebase_info_data_t sTimebaseInfo;
uint64_t machTime = mach_absolute_time();
// Convert to nanoseconds - if this is the first time we've run, get the timebase.
if (sTimebaseInfo.denom == 0)
{
(void) mach_timebase_info(&sTimebaseInfo);
}
// Convert the mach time to milliseconds
uint64_t millis = ((machTime/1000000) * sTimebaseInfo.numer)/sTimebaseInfo.denom;
return millis;
}
कोई भी जानता है कि mach_timebase_info कॉल पर अनावश्यक (शून्य) कास्ट क्यों है? –
@ सिमन टिलसन यह एक अच्छा सवाल है - या तो इसे चेतावनी चुप करने की आवश्यकता थी, या मैंने इसे कहीं और से कॉपी किया और बस इसे हटाने के लिए नोटिस नहीं किया। मुझे याद नहीं है –
आपको समय-समय पर प्रयोजनों के लिए [NSDate date]
पर भरोसा नहीं करना चाहिए क्योंकि यह समय-समय पर या अधिक समय तक रिपोर्ट कर सकता है। ऐसे मामले भी हैं जहां आपका कंप्यूटर समय-समय पर यात्रा करेगा क्योंकि विलुप्त समय नकारात्मक होगा! (उदा अगर घड़ी समय के दौरान पीछे की ओर ले जाया गया।)
Winter 2013 Stanford iOS course (34:00) के "उन्नत आईओएस इशारा मान्यता" व्याख्यान में आरिया haghighi के अनुसार, आप CACurrentMediaTime()
का उपयोग करना चाहिए अगर आप एक सटीक समय अंतराल की जरूरत है।
ऑब्जेक्टिव-सी:
#import <QuartzCore/QuartzCore.h>
CFTimeInterval startTime = CACurrentMediaTime();
// perform some action
CFTimeInterval elapsedTime = CACurrentMediaTime() - startTime;
स्विफ्ट:
let startTime = CACurrentMediaTime()
// perform some action
let elapsedTime = CACurrentMediaTime() - startTime
कारण है कि सर्वर पर [NSDate date]
समन्वयित हो जाता है, तो यह "समय-सिंक हिचकी" करने के लिए ले जा सकता है जो बहुत मुश्किल-से-ट्रैक बग का कारण बन सकता है। दूसरी ओर, CACurrentMediaTime()
, एक डिवाइस समय है जो इन नेटवर्क syncs के साथ नहीं बदलता है।
आपको अपने लक्ष्य की सेटिंग्स में addQuartzCore framework की आवश्यकता होगी।
कृपया इसे ऊपर उठाएं। हालांकि मुझे लगता है कि हर कोई इस बात से सहमत हो सकता है कि एनएसडीएट आपका पहला विकल्प होना चाहिए, इस सुझाव ने मेरा मुद्दा हल किया। एक प्रेषण ब्लॉक के भीतर एक समापन ब्लॉक के भीतर '[एनएसडीएटी तिथि] 'को कॉल करते समय, मुझे वही" चालू "समय मिल रहा था जिसे निष्पादन से पहले [एनएसडीएटी तिथि]' द्वारा रिपोर्ट किया जा रहा था, जिस बिंदु पर मेरे ब्लॉक बनाए गए थे। 'CACurrentMediaTime()' ने इस मुद्दे को हल किया। – n00neimp0rtant
हम एमएम: एसएस जैसे प्रदर्शन के लिए elapsedTime का उपयोग कैसे करेंगे? – CyberMew
मैंने कभी इस बारे में क्यों नहीं सुना है ... – Morkrom
अन्य उत्तरों सही हैं (एक चेतावनी * के साथ)।मैं बस एक उदाहरण उपयोग दिखाने के लिए इस उत्तर जोड़ें:
DEBUG Method '-[XMAppDelegate getYourAffairsInOrder]' ran. Elapsed: 0.033827 seconds.
* चेतावनी:: दूसरों के रूप में उल्लेख किया
- (void)getYourAffairsInOrder
{
NSDate* methodStart = [NSDate date]; // Capture start time.
// … Do some work …
NSLog(@"DEBUG Method %s ran. Elapsed: %f seconds.", __func__, -([methodStart timeIntervalSinceNow])); // Calculate and report elapsed time.
} डिबगर कंसोल पर
, तो आप कुछ इस तरह दिखाई , केवल आकस्मिक उद्देश्यों के लिए लंबित समय की गणना करने के लिए NSDate
का उपयोग करें। ऐसा एक उद्देश्य सामान्य परीक्षण, क्रूड प्रोफाइलिंग हो सकता है, जहां आप एक विधि को कितनी देर तक ले रहे हैं, इस बारे में कोई अंदाजा नहीं चाहते हैं।
जोखिम यह है कि डिवाइस घड़ी की वर्तमान समय सेटिंग किसी भी समय नेटवर्क घड़ी समन्वयन के कारण बदल सकती है। तो NSDate
समय किसी भी समय आगे या पिछड़ा कूद सकता है।
- 1. बीतने वाले समय को संभालना और भंडार करना
- 2. actioncript 3 समय बीतने का ट्रैक कैसे रखें?
- 3. System.nanoTime() का उपयोग करके मुझे नकारात्मक समय बीतने का समय क्यों मिलता है?
- 4. निजी चरों तक पहुंच के बिना जुनीट परीक्षण में समय बीतने का परीक्षण कैसे करें?
- 5. यूनिट परीक्षणों में दावा के रूप में समय बीतने का उपयोग करें
- 6. एंड्रॉइड ऐप स्टार्टअप समय मापें
- 7. स्कैपी कैसे पिंग समय मिलता है?
- 8. समय
- 9. समय()
- 10. समय
- 11. समय
- 12. समय
- 13. एंड्रॉयड हैंडलर समय-समय पर
- 14. जोडा समय गलत समय क्षेत्र
- 15. समय-समय पर ऑटोसवे फॉर्म
- 16. समय-समय पर समयावधि टाइमस्टैम्प,
- 17. सी # प्रारूप समय "समय पर"
- 18. MySQL, दिनांक समय और समय कॉलम को एक समय टिकट
- 19. मैं समय-समय पर फ़ील्ड में समय-समय पर फ़िल्टर कैसे करूं?
- 20. समय पिकर से समय के चयन पर विभिन्न समय क्षेत्र का समय प्राप्त करें
- 21. समय-1 के बीच समय-समय के बीच समय की गणना करें?
- 22. एंड्रॉइड: सर्वर पर समय-समय पर स्थान भेजने के लिए कैसे करें
- 23. एंड्रॉइड में समय-समय पर पॉपअप
- 24. एंड्रॉइड देव समय बनाम आईफोन देव समय
- 25. MySQL समय और अद्यतन समय टाइमस्टैम्प बनाएं
- 26. Grails: छवियों/सीएसएस समय-समय पर गायब
- 27. Django - समय-समय पर अपठनीय पोस्टस्ट्रायर?
- 28. Google ओपनआईडी/संघीय लॉगिन समय-समय पर
- 29. प्रारंभ समय और समाप्ति समय JMeter समयबद्धक
- 30. टाइमटाइम द्वारा समय-समय पर समूह
+1, अच्छा और पूर्वी उत्तर। धन्यवाद। :) – mAc
इसलिए यदि यह सही ढंग से –
@ निकोलसज़ोजोल समझा गया तो यह नकारात्मक मान है, आप फ्लोट के पूर्ण मूल्य प्राप्त करने के लिए 'fabs (...)' का उपयोग कर सकते हैं। उदाहरण के लिए। 'एनएसटीआईएम अंतराल समय अंतराल = fabs ([प्रारंभ समय अंतराल सेन्स]];' –