Durasi dan Jam
Ukur interval waktu
Durasi dan Jam adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.
Mengapa <chrono>?
Pustaka <chrono> memberi C++ cara yang aman tipe untuk bekerja dengan waktu. Alih-alih menggunakan bilangan bulat mentah, Anda menggunakan durasi dan titik waktu bertipe kuat sehingga kompilator dapat mendeteksi kesalahan satuan.
- Tidak ada lagi kekeliruan antara detik dan milidetik.
- Satuan menjadi bagian dari sistem tipe.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
seconds s{5};
std::cout << "Duration: " << s.count() << " seconds\n";
return 0;
}Apa Itu Durasi?
std::chrono::duration merepresentasikan rentang waktu. Objek ini menyimpan jumlah tik serta rasio yang menjelaskan periode setiap tik. Alias yang telah ditentukan mencakup satuan umum.
hours,minutes,secondsmilliseconds,microseconds,nanoseconds
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
milliseconds ms{1500};
std::cout << ms.count() << " ms\n";
return 0;
}Literal Durasi
Ruang nama std::chrono_literals memungkinkan Anda menulis durasi dengan sufiks seperti 5s atau 200ms, sehingga kode terbaca seperti bahasa biasa.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono_literals;
auto wait = 3s;
auto blink = 250ms;
std::cout << wait.count() << "s, " << blink.count() << "ms\n";
return 0;
}Mengonversi Durasi
duration_cast mengonversi antar satuan. Konversi dari satuan yang lebih kecil ke satuan yang lebih besar memotong bagian pecahan, sehingga 1500 ms menjadi 1 s.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
milliseconds ms{1500};
seconds s = duration_cast<seconds>(ms);
std::cout << s.count() << " whole seconds\n";
return 0;
}Aritmetika pada Durasi
Durasi mendukung +, -, *, dan /. Pencampuran satuan secara otomatis menggunakan satuan umum yang lebih kecil.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
auto total = minutes{2} + seconds{30};
std::cout << total.count() << " seconds total\n";
return 0;
}Durasi Titik Mengambang
Anda dapat menggunakan representasi titik mengambang untuk mempertahankan nilai pecahan saat melakukan konversi, sehingga menghindari pemotongan pada durasi bilangan bulat.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
milliseconds ms{1500};
duration<double> secs = ms;
std::cout << secs.count() << " seconds\n";
return 0;
}Apa Itu Jam?
Jam menyediakan waktu saat ini. Pustaka standar menyediakan tiga jenis:
system_clock— waktu jam dindingsteady_clock— tidak pernah berjalan mundur, ideal untuk pengukuran waktuhigh_resolution_clock— tik terkecil yang tersedia
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
auto now = steady_clock::now();
std::cout << "Got a time point: " << (now.time_since_epoch().count() > 0) << '\n';
return 0;
}Jam Sistem
system_clock melacak waktu kalender dunia nyata dan dapat dikonversi menjadi time_t untuk ditampilkan. Jam ini dapat melompat ketika jam sistem disesuaikan.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
auto tp = system_clock::now();
auto secs = duration_cast<seconds>(tp.time_since_epoch());
std::cout << "Seconds since epoch is positive: " << (secs.count() > 0) << '\n';
return 0;
}Jam Stabil
steady_clock bersifat monotonik: jam ini hanya bergerak maju dengan laju konstan. Gunakan jam ini setiap kali Anda mengukur waktu yang telah berlalu, jangan pernah gunakan system_clock.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
auto a = steady_clock::now();
auto b = steady_clock::now();
std::cout << "Monotonic: " << std::boolalpha << (b >= a) << '\n';
return 0;
}Resolusi Jam
Setiap jam menyediakan period sebagai rasio pada waktu kompilasi. Anda juga dapat memeriksa pada waktu kompilasi apakah suatu jam bersifat stabil.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
std::cout << "steady_clock is_steady: " << std::boolalpha << steady_clock::is_steady << '\n';
std::cout << "system_clock is_steady: " << system_clock::is_steady << '\n';
return 0;
}Menggabungkan Semuanya
Gabungkan jam dan durasi: baca dua titik waktu lalu hitung perbedaannya sebagai durasi dalam satuan pilihan Anda.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
auto start = steady_clock::now();
long sum = 0;
for (int i = 0; i < 1000000; ++i) sum += i;
auto end = steady_clock::now();
auto us = duration_cast<microseconds>(end - start);
std::cout << "Loop took at least 0 us: " << (us.count() >= 0) << '\n';
return 0;
}Pemeriksaan Singkat
Uji pemahaman Anda tentang jam yang harus digunakan untuk pengukuran waktu.
Ringkasan
Anda telah mempelajari bahwa <chrono> menyediakan:
- durasi — rentang waktu yang aman tipe dengan literal seperti
5s duration_castuntuk mengonversi satuan, dengan pemotongan pada bilangan bulat- jam —
system_clock,steady_clock,high_resolution_clock - gunakan
steady_clockuntuk mengukur interval
Selanjutnya, Anda akan merepresentasikan momen tertentu dalam waktu dengan titik waktu.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Durasi dan Jam” gratis?
Ya — teks lengkap “Durasi dan Jam” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Durasi dan Jam”?
Ukur interval waktu Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C++ Academy?
Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Durasi dan Jam” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Durasi dan Jam
- Titik Waktu
- Mengukur Performa Kode
- Kalender dan Zona Waktu