मैं सिर्फ कुछ यूनिट परीक्षणों को करते हुए DateTime.UtcNow के साथ कुछ अप्रत्याशित व्यवहार में भाग गया। ऐसा प्रतीत होता है कि जब आप DateTime.Now/UtcNow को तीव्र गति से कहते हैं, तो यह आपको अधिक सटीक मिलीसेकेंड वेतन वृद्धि पर कब्जा करने के बजाय समय की अपेक्षा अधिक लंबे अंतराल के लिए समान मूल्य वापस देने के लिए लगता है।
मुझे पता है कि एक स्टॉपवॉच वर्ग है जो सटीक समय माप करने के लिए बेहतर अनुकूल होगा, लेकिन मैं उत्सुक था कि क्या कोई डेटाइम में इस व्यवहार की व्याख्या कर सकता है? क्या DateTime.Now (उदाहरण के लिए, 50 मिसे के भीतर सटीक?) के लिए एक आधिकारिक सटीकता का दस्तावेज है? क्यों DateTime.Now सबसे सीपीयू घड़ियों क्या संभाल सकता है की तुलना में कम सटीक बनाया जाएगा? हो सकता है कि यह सिर्फ सबसे कम आम भाजक सीपीयू के लिए डिज़ाइन किया गया हो
public static void Main(string[] args)
{
var stopwatch = new Stopwatch();
stopwatch.Start();
for (int i=0; i<1000; i++)
{
var now = DateTime.Now;
Console.WriteLine(string.Format(
"Ticks: {0}\tMilliseconds: {1}", now.Ticks, now.Millisecond));
}
stopwatch.Stop();
Console.WriteLine("Stopwatch.ElapsedMilliseconds: {0}",
stopwatch.ElapsedMilliseconds);
Console.ReadLine();
}