में घड़ी() फ़ंक्शन की शुद्धता मेरे पास कुछ कोड है जो कोड ब्लॉक के निष्पादन समय को निर्धारित करने का प्रयास करता है।सी
#include <time.h>
#include <stdio.h>
int main()
{
clock_t start_t, end_t, total_t;
int i;
start_t = clock(); //clock start
printf("Starting of the program, start_t = %ld\n", start_t);
printf("Going to scan a big loop, start_t = %ld\n", start_t);
for(i=0; i< 10000000; i++) //trying to determine execution time of this block
{
}
end_t = clock(); //clock stopped
printf("End of the big loop, end_t = %ld\n", end_t);
total_t = (long int)(end_t - start_t);
printf("Total time taken by CPU: %lu\n", total_t );
return(0);
}
मेरी मशीन पर कोड स्निपेट के उत्पादन
Starting of the program, start_t = 8965
Going to scan a big loop, start_t = 8965
End of the big loop, end_t = 27259
Total time taken by CPU: 18294
तो है अगर मेरी सीपीयू 21 मेगाहर्ट्ज पर चल रहा था और यह सोचते हैं कि यह केवल एक चीज निष्पादित हो रही थी, प्रत्येक मशीन चक्र लगभग होगा 47 नैनोसेकंड के बराबर (18294 * 47) = 85 9 818 नैनोसेकंड।
क्या यह मेरे कोड में लूप के लिए निष्पादन का समय होगा? क्या मैं यहां कुछ गलत धारणाएं कर रहा हूं।
सेकंड में समय प्राप्त करने के लिए आपको संख्या को विभाजित करना चाहिए, उदाहरण के लिए 'CLOCKS_PER_SEC' के साथ, आपके मामले में' total_t'। ध्यान दें कि आपको काम करने के लिए 'flo_t' को फ़्लोटिंग पॉइंट मान में डालना होगा। –
आपकी नामकरण योजना पर भी एक छोटा सा नाइटपिकिंग: प्रत्यय '_t' के साथ समाप्त होने वाले प्रतीक आमतौर पर टाइप-उपनाम (जैसे 'टाइपडेफ़' के साथ बनाए गए) के लिए उपयोग किए जाते हैं। उदाहरण के लिए 'size_t' या 'time_t' और यहां तक कि' clock_t'। –
@ जोचिमपिलबोर्ग मैंने घड़ी() फ़ंक्शन के लिए प्रलेखन की समीक्षा की और CLOCK_PER_SEC एक सेकंड के 1/100 वें तक सटीक समय लौटाएगा और मैं 10 माइक्रोसॉन्ड तक संकल्प की तलाश कर रहा हूं इसलिए मैंने उल्लिखित दृष्टिकोण का उपयोग किया। इसके अलावा, मैं इसे विभिन्न प्लेटफॉर्म और आर्किटेक्चर पर काम करना चाहता हूं, इसलिए मैंने सोचा कि केवल अंतर की गणना करना और फिर घड़ी की गति के साथ गुणा करना बेहतर विकल्प होगा क्योंकि CLOCKS_PER_SEC आर्किटेक्चर के साथ बदल जाएगा। – user2808264