Giriş
duration olarak hazır gelen bazı sınıflar mevcut. Bunlar şöyle. İsimlerin hep çoğul. Açıklaması şöyle
days yazısına taşıdım.
months
months yazısına taşıdım.
years
years yazısına taşıdım.
Hazır Sınıflar Arasında Çevrim
Bu sınıflar arasında büyükten küçüğe otomatik çevrim olabilir. Örneğin mikrosaniye cinsinden parametre alan bir metoda milisaniye cinsinden bir parametre geçilebilir. Ancak tam tersi derlenmez.
Hazır Sınıflar ve Integral Değer
Hazır sınıfların aralarındaki fark süreyi saklamak için nasıl bir integral tip kullandıkları. Integral tipin neden farklı olduğu şöyle açıklanmış.
duration olarak hazır gelen bazı sınıflar mevcut. Bunlar şöyle. İsimlerin hep çoğul. Açıklaması şöyle
All "predefined" chrono::duration types are pluralİsimler şöyle. 9 tane var
nanosecondsKod olarak şöyle
microseconds
milliseconds
seconds
minutes
hours
days
months
years
namespace std {
namespace chrono {
typedef duration<signed int-type >= 64 bits,nano> nanoseconds;
typedef duration<signed int-type >= 55 bits,micro> microseconds;
typedef duration<signed int-type >= 45 bits,milli> milliseconds;
typedef duration<signed int-type >= 35 bits> seconds;
typedef duration<signed int-type >= 29 bits,ratio<60>> minutes;
typedef duration<signed int-type >= 23 bits,ratio<3600>> hours;
}
}
daysdays yazısına taşıdım.
months
months yazısına taşıdım.
years
years yazısına taşıdım.
Hazır Sınıflar Arasında Çevrim
Bu sınıflar arasında büyükten küçüğe otomatik çevrim olabilir. Örneğin mikrosaniye cinsinden parametre alan bir metoda milisaniye cinsinden bir parametre geçilebilir. Ancak tam tersi derlenmez.
Hazır sınıfların aralarındaki fark süreyi saklamak için nasıl bir integral tip kullandıkları. Integral tipin neden farklı olduğu şöyle açıklanmış.
Eğer istersek hazır sınıfa farklı bir integral verebiliriz. Küsuratlı olarak milisaniye görmek istersek şöyle yaparızIn Boost.DateTime, hours does not have the same representation as nanoseconds. The former is usually represented with a long whereas a long long is required for the latter. The reason for this is simply range. You don't need many hours to cover an extremely large range of time. But this isn't true of nanoseconds. Being able to reduce the sizeof overhead for some units when possible, can be a significant performance advantage.
std::chrono::system_clock::time_point a = std::chrono::system_clock::now();
...
std::chrono::system_clock::time_point b = std::chrono::system_clock::now();
std::chrono::duration<double, std::milli> work_time = b - a;
Şöyle yazdırırız.printf("Time: %f \n", work_time.count());
Çıktı olarak şunu alırız.Time: 199.057206
Time: 199.053581
Time: 199.064718
Time: 199.053515
Time: 199.053307
Time: 199.053415
Time: 199.053164
Time: 199.053511
Time: 199.053280
Time: 199.053283
duration sınıfının kendisi ise ratio<1> ile tanımlı. Yani birimi olmayan bir sayaç gibi. Eğer istersek double saklayan bir duration bile tanımlayabiliriz.std::chrono::duration<double>(timeToSleep)
Kendi Tanımım
Şöyle yaparız. Nanosecond değeri 100 ile çarparak long long tipinde saklar.using Ticks = std::chrono::duration<long long,
std::ratio_multiply<std::chrono::nanoseconds::period, std::ratio<100>>>;
Hiç yorum yok:
Yorum Gönder