O saat kötü olarak kabul edilir değil, mutlaka, insanların çoğu zaman. Yani, o üretmek için belirtilen değil düşünüyorum yolu çalışmasına tanımlı değil bile fazla . duvar saati, ya da 'gerçek', zaman
clock()
nasıl kullanıldığı kadar CPU zamanı anlatmak için tanımlanır;. daha konuları kullanarak ipler az zaman kullanmak uyku daha fazla CPU zamanı kullanır
İkincisi, tüm platformlar imp aynı davranışı kirletmek; Bazı platformlar, clock()
'u duvar saati saati verecekmiş gibi uygular. Böylece taşınabilir kod, her iki amaçla da kullanamaz.
Ancak bir nedeni clock()
bile olmayan taşınabilir kullanımlar için, kötü düşünülebilir, zaman noktaları ve zaman süreleri arasında ayrım yapmaz bir 'tip-güvensiz' API olmasıdır ve bağlantıda bulunduğu Sizin için zaman birimlerini güvenli bir şekilde yönetemezsiniz. Örneğin, API'sini kullanarak, milisaniyeyi temsil etmek için kullanılan değerlerle mikrosaniyeyi temsil etmesi beklenen değerleri kolayca karıştırabilir.
C++ 11 <chrono>
API
bu şeyler hakkında çok daha iyidir. Tek sorun,
<chrono>
'un bir CPU zaman saati içermemesidir. Duvar saati saati istiyorsanız,
std::chrono::steady_clock
en iyi seçimdir; Tip güvenli bir API'ye sahiptir ve 'gerçek zamanlı sabit bir hızda ilerlemek' için tanımlanmıştır.
0.1 saniye, her 4 mesajları uyku
http://coliru.stacked-crooked.com/a/6df6c71a436092e3
.
Geçen duvarın süresi: 0.101213 saniye.
Geçen işlem süresi: 0 saniye.
Her biri 0,1 saniye süreyle 4 konu dönüyor.
Geçen duvarın süresi: 0.100304 saniye.
Geçen işlem süresi: 0,4 saniye.
Ve burada eğlence için
std::clock()
kullanmak için bir
<chrono>
tarzı saat var:
#include <chrono>
#include <ratio>
#include <ctime>
struct cpu_clock {
using rep = std::clock_t;
using period = std::ratio<1, CLOCKS_PER_SEC>;
using duration = std::chrono::duration<rep, period>;
using time_point = std::chrono::time_point<cpu_clock, duration>;
static const bool is_steady = false;
static time_point now() noexcept {
return time_point{duration{std::clock()}};
}
};
Bu ilgisini çekebilir: http://en.cppreference.com/w/cpp/chrono/c/saat – Galik
@Galik linkten bir cevap çıkart, oy verebilmemiz için! – Christophe
@Galik işlevler düzgün görünüyor, yine de bu başlık yok. İndirmek mümkün mü? –
Pilpel