2009-10-13 10 views

उत्तर

3

clock

एक C++ कार्य करते हैं। आवेदन शुरू होने के बाद से यह सीपीयू टिक की संख्या देता है। सेकंड में इसे बदलने के लिए इसे CLOCKS_PER_SEC से विभाजित करें।

GetTickCount

एक Win32 एपीआई समारोह। सिस्टम शुरू होने के बाद मिलीसेकंड की संख्या देता है।

QueryPerformanceCounter

एक Win32 एपीआई समारोह। प्रदर्शन काउंटर एक उच्च-रिज़ॉल्यूशन काउंटर है जो समय के साथ बढ़ता है। सेकंड में इसे बदलने के लिए इसे QueryPerformanceFrequency से विभाजित करें।

7

नहीं, उनके पास मिलीसेकंद परिशुद्धता नहीं है। clock और GetTickCount अधिकांश सिस्टम पर 4 से 15 मिलीसेकंड सटीक के बीच है। QueryPerformanceCounter में माइक्रोसॉन्ड में नैनोसेकंद रेंज में एक सटीकता है।

clockGetTickCount के आसपास एक रैपर है यदि आप माइक्रोसॉफ्ट की सी रनटाइम लाइब्रेरी का उपयोग कर रहे हैं, जो कि यदि आप एमएस कंपाइलर का उपयोग कर रहे हैं, तो आप शायद हैं। GetTickCount मिलीसेकंड में एक मान देता है, लेकिन एक मिलीसेकंद समाप्त होने के बाद यह एक मिलीसेकंड तक नहीं बढ़ता है। यह केवल तब बढ़ता है जब सिस्टम घड़ी में बाधा होती है, जो प्रत्येक चार से 15 मिलीसेकंड होता है - आमतौर पर यह लगभग 15ms होता है, लेकिन इसे एप्लिकेशन द्वारा बदला जा सकता है। यह पूरे कंप्यूटर को प्रभावित करता है: यह थ्रेड शेड्यूलिंग को प्रभावित करता है, और अधिक बार-बार इंटरप्ट्स के ओवरहेड भी वास्तव में प्रोग्राम कोड चलाने के लिए कम CPU समय छोड़ देता है, इसलिए इसे तब तक न करें जब तक आपको वास्तव में इसकी आवश्यकता न हो। यदि आपका कंप्यूटर 15ms से अधिक बार टिक रहा है, तो कुछ अन्य अनुप्रयोगों ने टिक इंटरप्ट आवृत्ति को संशोधित किया है।

QueryPerformanceCounter सिस्टम पर जो भी उच्च-रिज़ॉल्यूशन टाइमर उपलब्ध हैं, का उपयोग करता है। अतीत में, यह आमतौर पर प्रोसेसर की घड़ी चक्रों की आंतरिक गणना पर आधारित था, इसलिए 2-3 गीगाहर्ट्ज या लगभग 0.5ns पर गिना जाएगा। दुर्भाग्य से कुछ प्रोसेसर ने उस दर को अलग किया जो काउंटर कम-शक्ति वाले राज्यों में और बहु-सीपीयू सिस्टम (यानी एकाधिक प्रोसेसर सॉकेट के साथ) पर टिकेगा, यदि सीपीयू सभी एक ही गति नहीं थे तो आपको समस्याएं मिलेंगी। विंडोज़ अब अन्य विश्वसनीय स्रोतों का उपयोग करता है, लेकिन वे प्रोसेसर के रूप में काफी उच्च संकल्प नहीं हैं। QueryPerformanceFrequency आपको बताता है कि एक सेकंड में कितने टिक होते हैं। मिलीसेकंड प्राप्त करने के लिए, 1000 द्वारा क्यूपीसी नमूने के अंतर को गुणा करें, और QueryPerformanceFrequency के परिणाम से विभाजित करें।

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