मैं अपने आवेदन को तेज करने की सोच रहा हूं क्योंकि यह प्रदर्शन महत्वपूर्ण है ... यानी हर मिलीसेकंद मैं इससे बाहर निकल सकता हूं बेहतर है। ऐसा करने के लिए मेरे पास एक तरीका है जो कुछ अन्य तरीकों को कॉल करता है और इनमें से प्रत्येक विधि Stopwatch
टाइमर और Console.WriteLine
कॉल के साथ लपेटा गया है। यानी .:कंसोल। राइटलाइन मेरे कोड को गति देता है?
private void SomeMainMethod()
{
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
SomeMethod();
sw.Stop();
Console.WriteLine("Time for SomeMethod = {0}ms", sw.ElapsedMilliseconds);
sw.Reset();
sw.Start();
SomeOtherMethod();
sw.Stop();
Console.WriteLine("Time for SomeOtherMethod= {0}ms", sw.ElapsedMilliseconds);
//...
}
समस्या यह है जब भी मैं Stopwatch
और Console.WriteLine
लाइनों कोड चलाता बाहर टिप्पणी के बारे में 20ms (नहीं 50) धीमी जो मैं क्या जरूरत के लिए एक बहुत है।
क्या किसी को पता है कि यह क्यों है?
संपादित करें: SomeMainMethod
विधि और कक्षा में दूसरों को भी एक Stopwatch
और Console.WriteLine
ऊपर के समान कॉल में लिपटे रहे हैं।
SomeMainMethod
और जिस तरीके से यह कॉल करता है वह कक्षा का हिस्सा है जो क्लास लाइब्रेरी का हिस्सा है जिसे कंसोल टेस्टबेड से बुलाया जाता है, जिसमें से सभी एकल थ्रेडेड होते हैं।
अधिक जानकारी के लिए: ऐप x86 .NET 4.6.1 में चल रहा है ऑप्टिमाइज़ेशन सक्षम के साथ रिलीज मोड। मैं इसे विजुअल स्टूडियो 2013 में भी नहीं चला रहा हूं।
यह ध्वनि अजीब अजीब लगता है .. मैं नहीं कह सकता कि मैंने – BugFinder
की गति में बदलावों को देखा है यदि आप स्टॉपवॉच का उपयोग नहीं कर रहे हैं, तो आप उसी समय में समय को माप नहीं रहे हैं। क्या आपने इसके लिए जिम्मेदार है? – stuartd
@ स्टुअर्टड लेकिन hes ने कहा कि स्टॉपवॉच को हटाकर और * धीमे * प्रदर्शित करता है, तेज़ नहीं? तो कम कोड – BugFinder