N3376'dan:
20.11.7.1 [time.clock.system] / 1:
Sınıfın nesneleri system_clock
, sistem genelinde gerçek zamanlı saatin duvar saati zamanını temsil eder.
20.11.7.2 [time.clock.steady] / 1:
Sınıfın nesneleri, fiziksel zaman ilerledikçe steady_clock
değerleri time_point
hiçbir zaman azalmayan ve ilerleme değerleri time_point
için gerçek zamana göre sabit bir hızda olan saatleri temsil eder . Yani saat ayarlanamayabilir.
20.11.7.3 [time.clock.hires] / 1:
Sınıfın nesneleri, high_resolution_clock
en kısa tıklama periyoduna sahip saatleri temsil eder. high_resolution_clock
eşanlamlıdır olabilir system_clock
ya da steady_clock
.
Örneğin, sistem geniş saati, gün ışığından yararlanma saati gibi bir şeyden etkilenebilir; bu noktada, gelecekte bir noktada listelenen gerçek zaman aslında geçmişte bir zaman olabilir. (Örneğin ABD'de düşüş zamanı bir saat geriye gider, dolayısıyla aynı saat "iki kez" yaşanır) Ancak steady_clock
bu tür şeylerden etkilenmesine izin verilmez.
Bu durumda "sabit" hakkında düşünmenin bir başka yolu, 20.11.3 [time.clock.req] / 2 tablosunda tanımlanan gereksinimlerdedir:
Tablo 59 yılında C1
ve C2
göstermektedirler saat türleri. t1
ve geri dönüşün çağrı geri dönmeden önce olduğu ve bu çağrıların her ikisi de daha önce gerçekleştiği yerde t2
döndürülen değerlerdir . [Not: Bu, ve arasında dolaşmadığı anlamına gelir . - notu gönder] C1::now()
t1
t2
C1::time_point::max()
C1
t1
t2
İfade: C1::is_steady
İade: const bool
İşlemsel Semantik: true
eğer t1 <= t2
her zaman doğruysa ve saat tıklamaları arasındaki zaman sabittir, aksi halde false
.
Standartların farklılıkları bu kadar.
Kıyaslama yapmak istiyorsanız, muhtemelen en iyi seçeneğiniz olacaktır std::high_resolution_clock
, çünkü muhtemelen platformunuz QueryPerformanceCounter
bu saat için yüksek çözünürlüklü bir zamanlayıcı (örneğin Windows'ta) kullanmaktadır. Bununla birlikte, kıyaslama yapıyorsanız, kıyaslamanız için platforma özel zamanlayıcıları kullanmayı gerçekten düşünmelisiniz, çünkü farklı platformlar bunu farklı şekilde ele alır. Örneğin, bazı platformlar size program için gerekli olan saat tiklerinin gerçek sayısını belirlemenin bazı yollarını verebilir (aynı CPU üzerinde çalışan diğer işlemlerden bağımsız olarak). Daha da iyisi, gerçek bir profil oluşturucuya geçin ve onu kullanın.