Ich habe gerade einige unerwartete Verhalten mit DateTime.UtcNow bei einigen Komponententests lief. Wenn Sie DateTime.Now/UtcNow in schneller Folge aufrufen, scheint es, als ob Sie den gleichen Wert für ein länger als erwartetes Zeitintervall zurückgeben, anstatt genauere Millisekunden-Schritte zu erfassen.C# DateTime.Now Genauigkeit
Ich weiß, dass es eine Stoppuhrklasse gibt, die besser für genaue Zeitmessungen geeignet wäre, aber ich war neugierig, ob jemand dieses Verhalten in DateTime erklären könnte? Gibt es eine offizielle Genauigkeit, die für DateTime.Now dokumentiert ist (z. B. präzise innerhalb 50 ms?)? Warum sollte DateTime.Now weniger genau gemacht werden als die meisten CPU-Uhren? Vielleicht ist es nur für die CPU mit dem kleinsten gemeinsamen Nenner ausgelegt?
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();
}
Was ist das Intervall, in dem Sie den gleichen Wert zurück? – ChrisF
Lesen Sie http://StackOverflow.com/Questions/307582/how-frequent-is-DateTime-now-updated-or-is-there-a-more-precise-api-to-get-the –
Als ich lief über Code, ich habe nur 3 eindeutige Werte für Ticks und Millisekunden, und die letzte Stoppuhr Zeit war 147 ms, so scheint es, dass auf meinem Rechner ist es nur präzise um 50ms ... –