SORU
26 Ocak 2010, Salı


C# DateTime.Şimdi hassas

Sadece DateTime ile bazı beklenmeyen davranış koştu.Bazı birim testleri yaparken UtcNow. DateTime dediğiniz gibi görünüyor.Şimdi peş peşe UtcNow/geri zaman-daha uzun-beklenen bir zaman aralığı için aynı değeri, daha hassas milisaniye aralıklarla yakalama yerine vermek gibi görünüyor.

Daha hassas zaman ölçümleri yapmak için uygun olacağını Kronometre bir sınıf olduğunu biliyorum, ama eğer birisi DateTime bu davranışı açıklayabilir merak ettim? Orada resmi bir hassasiyet DateTime belgelenmiş.Şimdi (örneğin, içinde 50 ms için kesin mi?)? Neden DateTime.Şimdi en CPU saatler ele verebilir daha az hassas yapılabilir? Belki de ortak payda CPU için tasarlanmış bir şey?

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();
}

CEVAP
27 Ocak 2010, ÇARŞAMBA


Neden DateTime.Şimdi en CPU saatler ele verebilir daha az hassas yapılabilir?

İyi bir saat, hem de olmalıdırkesinvedoğru; bu farklı. Eski şaka gider gibi, bir saat durdu tam olarak doğru iki kez bir gün, bir saat, bir dakika, yavaş hiçbir zaman doğru değildir. Ama saat bir dakika bir saat durdu hiç kullanışlı hassas ise her zaman en yakın dakikaya kesin.

Neden DateTime olmalıkesinsöyle olamaz zaman bir mikrosaniye muhtemelendoğrumikrosaniye mi? Çoğu insan mikrosaniye için doğru olan resmi zamanlı sinyaller için herhangi bir kaynak yok. Bu nedenle ondalık yeri altı rakam veriyorhassasson beşiçöpoluryalan söylüyor.

Unutmayın, DateTime amacıtarih ve saat temsil eder. Yüksek hassasiyetli zamanlama DateTime tüm amaç değildir; not, Kronometre amacı bu. DateTime amacı, tarih ve amaç kullanıcı için geçerli saat görüntüleniyor, önümüzdeki Salı gününe kadar gün sayısı hesaplama gibi, o zaman temsil etmektir.

Kısacası, "saat kaç?" ve "ne kadar sürdü bu?" tamamen farklı bir soru; bir aracı başka bir cevap için bir soruyu cevaplamak için tasarlanmış kullanmayın.

Soru için teşekkürler, bu iyi bir blog makale yazacak! :-)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CaptainDisillusion

    CaptainDisil

    18 EYLÜL 2007
  • FrameCityJackal

    FrameCityJac

    4 Aralık 2010
  • SuicideSheeep

    SuicideSheee

    8 Ocak 2012