मैं यह जानना चाहता हूं कि कोड के कुछ ब्लॉक कितने समय तक (लगभग) ब्लॉक निष्पादित होते हैं। कुछ इस तरह:मैं सी में समय कैसे मापूं?
startStopwatch();
// do some calculations
stopStopwatch();
printf("%lf", timeMesuredInSeconds);
कैसे?
मैं यह जानना चाहता हूं कि कोड के कुछ ब्लॉक कितने समय तक (लगभग) ब्लॉक निष्पादित होते हैं। कुछ इस तरह:मैं सी में समय कैसे मापूं?
startStopwatch();
// do some calculations
stopStopwatch();
printf("%lf", timeMesuredInSeconds);
कैसे?
आप में time.h
उदाहरण clock
विधि का उपयोग कर सकते हैं:
/* difftime example */
#include <stdio.h>
#include <time.h>
int main()
{
time_t start,end;
double dif;
time (&start);
// Do some calculation.
time (&end);
dif = difftime (end,start);
printf ("Your calculations took %.2lf seconds to run.\n", dif);
return 0;
}
(उदाहरण से अनुकूलित:
clock_t start = clock();
/*Do something*/
clock_t end = clock();
float seconds = (float)(end - start)/CLOCKS_PER_SEC;
आप time.h पुस्तकालय, विशेष रूप से time और difftime कार्यों का उपयोग कर सकते हैं ऊपर से जुड़े विभिन्न वेबपृष्ठ।)
कृपया ध्यान दें कि यह विधि केवल सेकंड की सटीकता प्रदान कर सकती है - time_t
UNIX epoch (1 जनवरी, 1 9 70) के बाद से सेकंड रिकॉर्ड करता है।
यह केवल सेकंड सटीकता देता है। और आपका उदाहरण वास्तव में '
क्षमा करें, 'सी' एक टाइपो था - ctime लाइब्रेरी को 'time.h' में परिभाषित किया गया है। और हाँ, यह केवल सेकंड सटीकता देता है। पोस्टर को ध्यान में रखते हुए "लगभग" कहा, मैंने पर्याप्त माना।मैं इस तथ्य को शामिल करने के लिए अपने उत्तर को संपादित करूंगा कि यदि आप चाहें तो यह केवल सेकंड स्तर की सटीकता प्रदान करेगा। – Stephen
आप शानदार संकल्प की जरूरत नहीं है, तो आप GetTickCount() इस्तेमाल कर सकते हैं: http://msdn.microsoft.com/en-us/library/ms724408(VS.85).aspx (यदि यह अपनी खुद की सरल निदान के अलावा कुछ के लिए है, तो ध्यान दें कि इस संख्या के आसपास लपेट कर सकते हैं, तो आप को प्रबंधित करना होगा कि थोड़ा अंकगणित के साथ)।
क्वेरीरीफॉर्मेंस काउंटर एक और उचित विकल्प है। (यह एमएसडीएन पर भी वर्णित है)
मैं विंडोज एपीआई के QueryPerformanceCounter और QueryPerformanceFrequency फ़ंक्शंस का उपयोग करूंगा। उदाहरणों के बीच "टिक" की संख्या प्राप्त करने के लिए ब्लॉक से पहले और बाद में पूर्व को दबाएं (वर्तमान − पुराना)। सेकेंड में अवधि प्राप्त करने के लिए बाद वाले फ़ंक्शन द्वारा प्राप्त मूल्य से इसे विभाजित करें।
GetTickCount()।
#include <windows.h>
void MeasureIt()
{
DWORD dwStartTime = GetTickCount();
DWORD dwElapsed;
DoSomethingThatYouWantToTime();
dwElapsed = GetTickCount() - dwStartTime;
printf("It took %d.%3d seconds to complete\n", dwElapsed/1000, dwElapsed - dwElapsed/1000);
}
आपका मंच क्या है? – pmod
@Pmod प्लेटफार्म से आपका क्या मतलब है? मेरा ओएस विंडोज है। – snakile
आप कौन सा रिज़ॉल्यूशन हासिल करना चाहते हैं, और आप कितने संचित ओवरहेड को बर्दाश्त करने के इच्छुक हैं? –