कोड: समान usings मेंउसी कोड ब्लॉक निष्पादन के इतने अलग अवधि का कारण क्या है?
internal class Program
{
private static void Main(string[] args)
{
const int iterCount = 999999999;
var sum1 = 0;
var sum2 = 0;
using (new Dis())
{
var sw = DateTime.Now;
for (var i = 0; i < iterCount; i++)
sum1 += i;
Console.WriteLine(sum1);
Console.WriteLine(DateTime.Now - sw);
}
using (new Dis())
{
var sw = DateTime.Now;
for (var i = 0; i < iterCount; i++)
sum2 += i;
Console.WriteLine(sum2);
Console.WriteLine(DateTime.Now - sw);
}
Console.ReadLine();
}
private class Dis : IDisposable
{
public void Dispose(){}
}
}
दो समान ब्लॉकों।
आउटपुट:
2051657985
00:00:00.3690996
2051657985
00:00:02.2640266
दूसरा ब्लॉक 2.2 सेकंड लेता है! लेकिन अगर उपयोग से छुटकारा पाने के लिए, अवधि समान हो गई (~ 0.3s, पहले की तरह)। मैंने रिलीज में .NET फ्रेमवर्क 4.5 और .NET कोर 1.1 के साथ प्रयास किया है, परिणाम समान हैं।
क्या कोई उस व्यवहार को समझा सकता है?
शायद इसे 'कंसोल। राइटलाइन' के बजाय चर के साथ आज़माएं?यह एक समस्या हो सकती है। – ispiro
जब मैं आपका कोड linqpad में चलाता हूं तो यह मुझे कोड ब्लॉक दोनों के लिए ~ 2.5 सेकंड देता है। जब विचार पर चलाया जाता है तो यह दोनों ब्लॉक के लिए ~ 0.3 सेकंड देता है: https://ideone.com/ReOpaH। – Chris
एक उचित स्टॉपवॉच का भी उपयोग करें। आप अपने डेटाटाइम वेरिएबल sw को कॉल करते हैं जिसका अर्थ है कि आप स्टॉपवॉच का उपयोग करना चाहते हैं लेकिन फिर आप एक का उपयोग नहीं कर रहे हैं। – Chris