2010-08-03 13 views
5

मैं उत्सुक हूँ अगर वहाँ निष्पादन समय को मापने के लिए सी में एक निर्माण में समारोह ++ है? मैं इस समय विंडोज का उपयोग कर रहा हूं। लिनक्स में यह बहुत आसान है ...खोजने C++ निष्पादन समय

उत्तर

4

विंडोज़ पर सबसे अच्छा तरीका, जहां तक ​​मुझे पता है, QueryPerformanceCounter और QueryPerformanceFrequency का उपयोग करना है।

QueryPerformanceCounter(LARGE_INTEGER*) स्थानों LARGE_INTEGER में प्रदर्शन काउंटर के मूल्य पारित कर दिया।

QueryPerformanceFrequency(LARGE_INTEGER*) स्थानों आवृत्ति प्रदर्शन काउंटर LARGE_INTEGER में वृद्धि की जाती है पारित कर दिया।

फिर आप काउंटर को रिकॉर्ड करके निष्पादन समय मिल सकता है के रूप में निष्पादन शुरू होता है, और फिर काउंटर रिकॉर्डिंग जब निष्पादन खत्म। काउंटर के परिवर्तन को पाने के लिए अंत से शुरुआत को घटाएं, फिर सेकेंड में समय प्राप्त करने के लिए आवृत्ति से विभाजित करें।

LARGE_INTEGER start, finish, freq; 
QueryPerformanceFrequency(&freq); 
QueryPerformanceCounter(&start); 
// Do something 
QueryPerformanceCounter(&finish); 
std::cout << "Execution took " 
    << ((finish.QuadPart - start.QuadPart)/(double)freq.QuadPart) << std::endl; 
2

यह भी Windows के तहत बहुत आसान है - वास्तव में यह दोनों std::clock, d पर एक ही समारोह <ctime>

1

सी ++ में efined कोड निष्पादन समय को मापने के उच्च का पठन स्तर के लिए कोई बिल्ट-इन कार्य गया है , आपको प्लेटफ़ॉर्म-विशिष्ट कोड का सहारा लेना होगा। Windows के लिए कोशिश QueryPerformanceCounter: http://msdn.microsoft.com/en-us/library/ms644904(VS.85).aspx

1

कार्यों का उपयोग करना चाहिए टाइमर के संकल्प की जरूरत पर निर्भर हैं। उनमें से कुछ 10 एमएमएस संकल्प देते हैं। उन कार्यों का उपयोग करना आसान है। दूसरों को अधिक काम की आवश्यकता होती है, लेकिन बहुत अधिक रिज़ॉल्यूशन देते हैं (और कुछ वातावरण में आपको कुछ सिरदर्द हो सकता है। हालांकि, आपकी देव मशीन ठीक काम कर सकती है)।

http://www.geisswerks.com/ryan/FAQS/timing.html

इस लेख का उल्लेख है:

  • timeGetTime
  • RDTSC (एक प्रोसेसर सुविधा, न कि एक ओएस सुविधा)
  • QueryPerformanceCounter
2

आप उपयोग कर सकते हैं Windows API फंक्शन GetTickCount() और सेंट पर मानों की तुलना करें कला और अंत। संकल्प 16 एमएस ballpark में है। किसी कारण से आप अधिक परिष्कृत समय की जरूरत है, तो आप QueryPerformanceCounter को देखने के लिए की आवश्यकता होगी।

0

सी ++ कई प्लेटफ़ॉर्म पर काम करता है। कुछ प्लेटफॉर्म पर काम करने वाले कुछ का उपयोग क्यों न करें, जैसे कि Boost लाइब्रेरीज़। Boost Timer Library

के लिए दस्तावेज़ पर

देखो मुझे विश्वास है कि यह एक शीर्ष लेख-केवल पुस्तकालय, जिसका अर्थ है कि यह सेटअप और उपयोग करने के लिए सरल है ...

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