व्यक्तिगत अनुभव से, System.Diagnostics.Stopwatch
कक्षा का उपयोग किसी विधि के निष्पादन समय को मापने के लिए किया जा सकता है, हालाँकि, BEWARE : यह पूरी तरह से सही नहीं है!
निम्नलिखित उदाहरण पर विचार करें:
Stopwatch sw;
for(int index = 0; index < 10; index++)
{
sw = Stopwatch.StartNew();
DoSomething();
Console.WriteLine(sw.ElapsedMilliseconds);
}
sw.Stop();
उदाहरण के परिणाम
132ms
4ms
3ms
3ms
2ms
3ms
34ms
2ms
1ms
1ms
अब तुम सोच रहे हो; "अच्छी तरह से पहली बार 132ms क्यों लिया, और बाकी समय में काफी कम है?"
इसका उत्तर यह है कि Stopwatch
.NET में "पृष्ठभूमि शोर" गतिविधि के लिए क्षतिपूर्ति नहीं करता है, जैसे कि JITing। इसलिए पहली बार जब आप अपना तरीका चलाते हैं, तो .NET JIT पहले। ऐसा करने में लगने वाले समय को निष्पादन के समय में जोड़ा जाता है। समान रूप से, अन्य कारक भी निष्पादन के समय को भिन्न करेंगे।
क्या आप वास्तव में पूर्ण सटीकता की तलाश में होना चाहिए प्रदर्शन प्रोफाइलिंग है !
निम्नलिखित पर एक नज़र डालें:
RedGate ANTS प्रदर्शन Profiler एक वाणिज्यिक उत्पाद है, लेकिन बहुत सटीक परिणाम पैदा करता है। - .NET प्रोफाइलिंग के साथ अपने अनुप्रयोगों के प्रदर्शन को बढ़ावा दें
यहाँ प्रोफाइलिंग पर एक StackOverflow लेख है: - कुछ अच्छे .NET प्रोफाइलर क्या हैं?
मैंने स्टॉपवॉच का उपयोग करके प्रदर्शन प्रोफ़ाइल पर एक लेख भी लिखा है जिसे आप .NET में प्रदर्शन प्रोफाइलिंग के रूप में देखना चाहते हैं
ThreadPool.QueueUserWorkItem(delegate { CopyFiles(folder, dest); });
अंदर है, लेकिन सब कुछ होने से पहले स्टॉपवॉच बंद हो जाता है।