सबसे अच्छा तरीका है बीच में समारोह को रोकने के लिए की तरह कोड के किसी भी ब्लॉक रैप करने के लिए समारोह में return
कीवर्ड है, लेकिन कैसे मैं जानता हूँ कि जबउपयोग करने के लिए करते हैंकीवर्ड को फ़ंक्शन को मध्य में रोकने के लिए, कम से कम 3 सेकंड तक रहता है? Stopwatch
System.Diagnostics
से कक्षा का उत्तर है। यह जटिल फ़ंक्शन जो 2 सेकंड से 5 मिनट के बीच रहता है (इनपुट डेटा के आधार पर) तार्किक रूप से कई लूप का उपयोग करता है, और यहां तक कि रिकर्सन भी हो सकता है, इसलिए आपके लिए मेरा समाधान यह है कि, उस फ़ंक्शन के पहले पंक्ति कोड पर, Stopwatch
का उदाहरण बनाएं new
कीवर्ड के साथ System.Diagnostics
का उपयोग कर, यह स्टॉपवॉच वर्ग के Start()
कार्यप्रणाली को कॉल करके प्रारंभ करें, और प्रत्येक पाश और पाश के लिए में, शुरुआत में, निम्न कोड जोड़ें:
if (stopwatch.ElapsedMilliseconds >= 3000) {
stopwatch.Stop();
// or
stopwatch.Reset();
return;
}
(टिप: आप इसे टाइप कर सकते हैं एक बार हाथों से, इसे Ctrl + C कॉपी करें, और उसके बाद इसे Ctrl + V चिपकाएं)। यदि वह फ़ंक्शन स्मृति को सहेजने के लिए रिकर्सन का उपयोग करता है, तो पहले इसे स्थानीय उदाहरण के रूप में बनाने के बजाय स्टॉपवॉच वैश्विक उदाहरण बनाएं, और इसे शुरू करें यदि यह कोड की शुरुआत में नहीं चल रहा है। आप स्टॉपवॉच क्लास के IsRunning
के साथ जान सकते हैं। उसके बाद पूछें कि क्या विलुप्त समय 3 सेकंड से अधिक है, और यदि हां (true
) स्टॉपवॉच को रोकें या रीसेट करें, और रिकर्सन लूप को रोकने के लिए return
कीवर्ड का उपयोग करें, फ़ंक्शन में बहुत अच्छी शुरुआत करें, यदि आपका फ़ंक्शन मुख्य रूप से रिकर्सन के कारण लंबे समय तक रहता है loops से अधिक। यही है वो। जैसा कि आप देख सकते हैं, यह बहुत आसान है, और मैंने इस समाधान का परीक्षण किया, और परिणामों से पता चला कि यह काम करता है! यह अपने आप का प्रयास करें!
स्रोत
2013-03-04 18:56:08
संभावित डुप्लिकेट http://stackoverflow.com/questions/5025509/how-to-estimate-method-execution-time – Reniuz
हां, यह डुप्लिकेट है, बेंचमार्किंग उसी तरह से समाप्त होता है जैसे किसी अन्य थ्रेड स्टॉप हो जाता है। –