मैंने प्रति सेकंड घड़ी की वास्तविक संख्या अनुमानित करने के लिए इस छोटे सी ++ प्रोग्राम को अभी लिखा है।क्यों CLOCKS_PER_SEC प्रति सेकंड घड़ियों की वास्तविक संख्या क्यों है?
#include <iostream>
#include <time.h>
using namespace std;
int main() {
for(int i = 0; i < 10 ; i++) {
int first_clock = clock();
int first_time = time(NULL);
while(time(NULL) <= first_time) {}
int second_time = time(NULL);
int second_clock = clock();
cout << "Actual clocks per second = " << (second_clock - first_clock)/(second_time - first_time) << "\n";
cout << "CLOCKS_PER_SEC = " << CLOCKS_PER_SEC << "\n";
}
return 0;
}
जब मैं प्रोग्राम चलाता हूं, तो मुझे ऐसा लगता है जो आउटपुट मिलता है।
Actual clocks per second = 199139
CLOCKS_PER_SEC = 1000000
Actual clocks per second = 638164
CLOCKS_PER_SEC = 1000000
Actual clocks per second = 610735
CLOCKS_PER_SEC = 1000000
Actual clocks per second = 614835
CLOCKS_PER_SEC = 1000000
Actual clocks per second = 642327
CLOCKS_PER_SEC = 1000000
Actual clocks per second = 562068
CLOCKS_PER_SEC = 1000000
Actual clocks per second = 605767
CLOCKS_PER_SEC = 1000000
Actual clocks per second = 619543
CLOCKS_PER_SEC = 1000000
Actual clocks per second = 650243
CLOCKS_PER_SEC = 1000000
Actual clocks per second = 639128
CLOCKS_PER_SEC = 1000000
CLOCKS_PER_SEC के साथ प्रति सेकंड मैच की घड़ी की वास्तविक संख्या क्यों नहीं है? वे लगभग बराबर नहीं हैं। यहाँ क्या चल रहा है?
ध्यान दें कि आप एक सेकंड से भी कम समय के लिए पाश कर सकते हैं। यदि आप 'समय' कहते हैं, और अगले सेकंड के लिए 200ms शेष हैं, तो आप ~ 200ms लूप करेंगे। वैसे भी, यह शायद मुख्य समस्या नहीं है। – mfontanini
ठीक है, मुझे एहसास है कि यही कारण है कि लूप का पहला पुनरावृत्ति बाद के पुनरावृत्तियों की तुलना में एक छोटा परिणाम देता है। लेकिन मेरा सवाल बाद के पुनरावृत्तियों के बारे में है। मुझे लगता है कि मुझे यह स्पष्ट करना चाहिए था। –
अब भी आप प्रत्येक बाद के पुनरावृत्ति में अपने कोउट का ओवरहेड प्राप्त करते हैं। जब तक आप अपना माप शुरू करने से पहले एक सेकंड की शुरुआत में हों, तब तक प्रतीक्षा करें। – David