2012-12-25 11 views
6

मैं मिलीसेकंड को एक निश्चित फ़ंक्शन (बार-बार कहा जाता है) कैसे गिन सकता हूं?
मैं के बारे में सोचा:
CTime::GetCurrentTM() से पहले,
CTime::GetCurrentTM() के बाद,मिलीसेकंड में एमएफसी उपाय फ़ंक्शन

और फिर CTimeSpan diff = after - before लिए परिणाम डालें।
आखिरकार वैश्विक सदस्य को उस diff को स्टोर करें जो सभी diffs को जोड़ता है क्योंकि मैं इस फ़ंक्शन को व्यतीत करने के कुल समय को जानना चाहता हूं।

लेकिन यह जवाब सेकंड में और मिलीसेकंड नहीं देगा।

उत्तर

6

एमएफसी सी ++ है, है ना?

यदि ऐसा है, तो आप बस clock() का उपयोग कर सकते हैं।

#include <ctime> 

clock_t time1 = clock(); 
// do something heavy 
clock_t time2 = clock(); 
clock_t timediff = time2 - time1; 

float timediff_sec = ((float)timediff)/CLOCKS_PER_SEC; 

यह आमतौर पर आपको मिलीसेकंद परिशुद्धता देगा।

1

यदि आप एमएफसी का उपयोग कर रहे हैं, तो अच्छा तरीका WIN API का उपयोग करना है। और चूंकि आप केवल समय के अंतर की गणना करने के लिए चिंतित हैं, इसलिए नीचे दिया गया कार्य आपको पूरी तरह अनुकूल कर सकता है।

GetTickCount64() 

सिस्टम शुरू होने के बाद सीधे number of milli seconds that has elapsed लौटाता है।

आप अपने सिस्टम को लंबे समय तक (ठीक 49.7 की तुलना में अधिक दिन) रखने के लिए योजना बना रहे हैं नहीं है, छोटा सा तेजी से संस्करण - GetTickCount() समारोह

+0

क्योंकि यह सिस्टम शुरू होने पर आधारित है, ऐसा लगता है कि इस दृष्टिकोण में एक समस्या है: जब कंप्यूटर बहुत ही कम हो जाता है: यह काउंटर बह सकता है! – sergiol

0

COleDateTime आंतरिक रूप से काम मिलीसेकेंड के आधार पर करने के लिए जाना जाता है, क्योंकि यह टाइमस्टैम्प संग्रहीत करता है इसके m_dt चर पर, जो कि DATE प्रकार का है, इसलिए इच्छित उद्देश्य के लिए संकल्प होना।

मैं तुम्हें

DATE now= (DATE) COleDateTime::GetCurrentTime(); 

पर अपना समय के आधार के लिए और संबंधित गणना करने के बाद कर सकते हैं सुझाव।

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