2010-04-06 33 views
9

MSDN पेज पर मैं जो स्टॉपवॉच के बारे में बयान निम्नलिखित बनाता interesting article के लिए लिंक की खोज:स्टॉपवॉच वास्तव में टूटा हुआ है? <a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx" rel="nofollow noreferrer">Stopwatch class</a> के लिए

  • यह कई प्रोसेसर के साथ एक पीसी पर अविश्वसनीय हो सकता है:

    लेकिन वहाँ कुछ गंभीर मुद्दे हैं।
    में एक बग के कारण BIOS, प्रारंभ() और रोकें() को एक ही प्रोसेसर पर निष्पादित किया जाना चाहिए ताकि सही परिणाम प्राप्त हो सके।

  • यह प्रोसेसर है कि एक निरंतर घड़ी गति (सबसे प्रोसेसर ऊर्जा संरक्षण के लिए घड़ी की गति को कम कर सकते हैं) की जरूरत नहीं है पर अविश्वसनीय है। यह विस्तार से समझाया गया है here

मैं थोड़ा उलझन में हूँ। मैंने स्टॉपवॉच का उपयोग करने के tons of examples को देखा है और कोई भी इस कमी का उल्लेख नहीं करता है। यह कितना गंभीर है? क्या मुझे स्टॉपवॉच का उपयोग करने से बचना चाहिए?

उत्तर

2

यह टूटा है, इसकी सीमाएं हैं। अधिकांश उद्देश्यों के लिए (पढ़ें: अनौपचारिक माइक्रो-बेंचमार्किंग) StopWatch केवल उपयोग करने के लिए ठीक है क्योंकि यह अनौपचारिक परीक्षण के लिए पर्याप्त है। अधिक औपचारिक उद्देश्यों के लिए आप संभवतः अपने स्वयं के उपकरण कोड को रोल करना चाहते हैं क्योंकि आप उचित परिणाम प्राप्त करने में बहुत अधिक निवेश करेंगे।

2

अधिक दिलचस्प सवाल कर रहे हैं:

  1. किन स्थितियों बंद हो जाएगा के तहत() प्रारंभ से एक अलग प्रोसेसर पर निष्पादित किया()?

    अधिकांश एप्लिकेशन परिदृश्यों में, उत्तर "कोई नहीं" है।

  2. एक मापा अंतराल के दौरान एक प्रोसेसर की घड़ी की गति किस स्थिति में बदल जाएगी?

    सीपीयू-गहन मानक में, "कोई नहीं"।

+0

सीपीयू गहन मानक के मामले में आप शायद सही हैं। लेकिन असीमित आईओ चीजों के मामले में पूरी तरह से अलग हो सकता है। –

+0

मैं आपके पहले वक्तव्य से सहमत नहीं हूं। मेरे पास उन टूटे हुए कंप्यूटरों में से एक था, और यह अक्सर दिखाया गया था। पीछे की ओर जाने के कारण भी यह गेम दुर्घटनाग्रस्त हो गया। – CodesInChaos

2

MSDN अनुच्छेद में नोट्स देखें:

एक मल्टीप्रोसेसर कंप्यूटर पर, यह कोई बात नहीं जो प्रोसेसर धागे पर चलता है। हालांकि, BIOS या हार्डवेयर एब्स्ट्रक्शन लेयर (एचएएल) में कीड़े की वजह से, आप विभिन्न प्रोसेसर पर अलग-अलग समय के परिणाम प्राप्त कर सकते हैं। थ्रेड के लिए प्रोसेसर एफ़िनिटी निर्दिष्ट करने के लिए, ProcessThread.ProcessorAffinity विधि का उपयोग करें।

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

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