2010-04-06 17 views

उत्तर

10

आप जो चाहते हैं उसे करने के लिए आप System.Diagnostics.Stopwatch का उपयोग कर सकते हैं।

+0

+1 संदर्भ को सूचीबद्ध करने के लिए। –

37

आप आमतौर पर इसके लिए टाइमर का उपयोग नहीं करते हैं - आप Stopwatch का उपयोग करते हैं।

Stopwatch sw = Stopwatch.StartNew(); 
// Do work 
sw.Stop(); 
TimeSpan elapsedTime = sw.Elapsed; 

आप अपेक्षाकृत तेज कुछ की बेंच मार्किंग प्रदर्शन कर रहे हैं, यह इतना है कि समय लिया महत्वपूर्ण है (मैं आमतौर पर 5-30 सेकंड के लिए जाना) कई, कई बार यह कर योग्य है। यह हमेशा स्वीकार्य नहीं है, स्वीकार्य रूप से - और वहां कई और सूक्ष्मताएं हैं जो असली दुनिया के प्रदर्शन को प्रभावित करती हैं (जैसे कैश हिट/मिस) जो माइक्रो-बेंचमार्किंग अक्सर याद आती है।

असल में, सावधान रहें - लेकिन Stopwatch शायद कई मामलों में सबसे अच्छा प्रारंभिक बिंदु है।

+1

स्टॉपवॉच के लिए +1। स्टार्टन्यू()। इसके बारे में नहीं पता था। – Joop

+0

"आप आमतौर पर नहीं बनाते" बनाम "आप आम तौर पर नहीं करते"। मुझे प्रबुद्ध करें: सही व्याकरण दोनों हैं? –

+1

@ मार्टिन्हो: मुझे लगता है * दोनों स्वीकार्य हैं। यह संभव है कि किसी को दूसरे पर प्राथमिकता दी जाए, हालांकि मुझे नहीं पता कि कौन सा :) –

0

आप Timer का उपयोग कर सकते हैं और Elapsed ईवेंट पर एक क्रिया संलग्न कर सकते हैं। उदाहरण के लिए आप अपने धागे को रोक सकते हैं ... हम्म यदि आप परिणामों से डरते नहीं हैं ... असल में आप ऐसा कर सकते हैं यदि आप उदाहरण के लिए अपनी प्रक्रिया में टाइमआउट सेट करना चाहते हैं।

यदि यह सिर्फ निगरानी के लिए है, तो स्टॉपवॉच केवल आपकी आवश्यकताओं को फिट करता है

+0

थ्रेड को निरस्त करने पर दिलचस्प पढ़ना: http://blogs.msdn.com/ericlippert/archive/2010/02/22/should-i-specify-a-timeout.aspx और http://blogs.msdn.com/ericlippert /archive/2010/02/25/careful-with-that-axe-part-two-what-about-exceptions.aspx –