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_clockdeğerleri time_pointhiçbir zaman azalmayan ve ilerleme değerleri time_pointiç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_clocken kısa tıklama periyoduna sahip saatleri temsil eder. high_resolution_clockeşanlamlıdır olabilir system_clockya 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_clockbu 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 C1ve C2göstermektedirler saat türleri. t1ve 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 t2döndürülen değerlerdir . [Not: Bu, ve arasında dolaşmadığı anlamına gelir . - notu gönder] C1::now()t1t2C1::time_point::max()C1t1t2
İfade: C1::is_steady
İade: const bool
İşlemsel Semantik: trueeğer t1 <= t2her 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 QueryPerformanceCounterbu 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.