Bagaimana cara menggunakan fungsi gettimeofday dalam bahasa C?

How Use Gettimeofday Function C Language



NS gettimeofday() fungsi mendapatkan waktu jam sistem. Waktu saat ini dinyatakan dalam detik berlalu dan mikrodetik sejak 00:00:00, 1 Januari 1970 (Unix Epoch). Pada artikel ini, kami akan menunjukkan cara menggunakan gettimeofday() fungsi di Linux. Jadi, mari kita mulai.

Sintaksis

ke dalamgettimeofday( strukturwaktu*kota, strukturzona waktu*tz)

NS gettimeofday() fungsi didefinisikan dalam sys/time.h berkas kepala.







Argumen

Fungsi ini membutuhkan dua argumen:



1NSargumen menunjuk ke waktu struktur. NS waktu struktur dinyatakan seperti di bawah ini di sys/time.h berkas kepala:



strukturwaktu{
waktu_t tv_detik; //digunakan untuk detik
suseconds_t tv_usec; //digunakan untuk mikrodetik
}

Struktur timeval struct mewakili waktu kalender. Ini memiliki dua anggota:





  • tv_sec : Ini adalah jumlah detik sejak zaman.
  • tv_usec : Ini adalah mikrodetik tambahan setelah penghitungan jumlah detik sejak zaman. .

2danargumen menunjuk ke zona waktu struktur. Biasanya harus disetel ke NULL karena zona waktu struktur sudah usang. Argumen ini hanya untuk kompatibilitas mundur.

Mengembalikan nilai

Pada kesuksesan, gettimeofday() return 0, untuk kegagalan fungsi mengembalikan -1.



Sederhana Dapatkan Waktu dan Cetak

#termasuk
#termasuk

ke dalamutama() {
strukturwaktu saat_waktu;
gettimeofday(&waktu saat ini,BATAL);
printf ('detik : %ld mikro detik : %ld',
waktu saat ini.tv_sec,waktu saat ini.tv_usec);

kembali 0;
}

Keluaran:

Di Sini, sys/time.h telah disertakan untuk gettimeofday() fungsi dan struktur waktu. NS gettimeofday() fungsi mengatur waktu dalam anggota struktur timeval (current_time). tv_sec adalah jumlah detik yang telah berlalu sejak awal zaman UNIX , pada tengah malam UTC pada 1 Januari 1970 dan tv_usec adalah jumlah mikrodetik tambahan yang telah berlalu dari tv_sec. Jika Anda menjalankan program, Anda akan melihat hasilnya. Setiap kali Anda menjalankan program, output akan berubah.

Kesalahan Argumen NULL

#termasuk
#termasuk

ke dalamutama() {

strukturwaktu saat_waktu;
gettimeofday(BATAL,BATAL);
kembali 0;
}

Keluaran:

Dalam contoh ini menunjukkan bahwa argumen pertama dari gettimeofday() fungsi tidak boleh NULL. Peringatan kompilasi akan muncul jika argumen pertama adalah NULL.

Memformat Contoh Waktu Saat Ini

#termasuk
#termasuk
#termasuk

ke dalamutama() {
strukturtv waktu;
waktu_t t;
strukturtm*info;
arangpenyangga[64];

gettimeofday(&televisi,BATAL);
T=televisi.tv_sec;

info= waktu lokal (&T);
printf ('%S', waktu asc (info));
waktu luang (penyangga, ukuran daripenyangga, 'Hari ini %A, %B %d. ',info);
printf ('%S',penyangga);
waktu luang (penyangga, ukuran daripenyangga, 'Waktunya %I:%M %p. ',info);
printf ('%S',penyangga);

kembali 0;
}

Keluaran:

Dalam contoh ini menunjukkan cara mencetak Tanggal dan Waktu dalam format yang berbeda. Tidaklah mudah untuk merepresentasikan tanggal dari nilai pengembalian gettimeofday() fungsi . Di Sini, waktu lokal() dan waktu-waktu() fungsi digunakan untuk mewakili dengan baik nilai kembali dari gettimeofday() .

NS waktu lokal() fungsi mengambil argumen, yang merupakan referensi ke pointer dari tv_sec bidang waktu struktur dan mengembalikan referensi ke pointer a struktur tm obyek.

NS waktu-waktu() fungsi akan menghasilkan string yang diformat dan dipersonalisasi yang menunjukkan tanggal dan waktu dari struktur tm penunjuk. Penentu format digunakan untuk tampilan yang diformat. Misalnya, format string %d-%m-%Y %H:%M:%S menentukan tanggal dan waktu dalam formulir ini:

14-04-2020 13:09:42

Berikut ini adalah penentu konversi, dapat digunakan untuk tampilan berformat:

penentu Arti
%ke Nama singkat dari hari kerja sesuai dengan lokal saat ini.
%KE Nama hari kerja sesuai dengan lokasi saat ini.
% B Nama bulan disingkat sesuai lokal sekarang.
% B Nama bulan penuh sesuai lokal saat ini.
% C Representasi tanggal dan waktu yang disukai untuk lokal saat ini.
%D Sebagai angka desimal untuk hari bulan (kisaran 01 – 31).
%H Menggunakan 24-jam (rentang 00 – 23) hingga jam sebagai angka desimal.
%SAYA Menggunakan 12-jam (rentang 00 – 23) ke jam sebagai angka desimal.
%J Sebagai angka desimal untuk hari dalam setahun (kisaran 001-366).
%M Sebagai angka desimal untuk bulan tersebut (kisaran 01 – 12).
%M Angka desimal menit.
%P Berdasarkan nilai waktu yang ditentukan, baik 'am' atau 'pm' atau string yang setara untuk lokal saat ini.
%S Angka desimal detik.
% x Representasi yang disukai dari tanggal untuk lokal saat ini, tetapi tanpa waktu.
% X Representasi waktu yang disukai untuk lokal saat ini, tetapi tanpa tanggal.
%dan Tahun adalah desimal tetapi tidak ada abad (berkisar dari 00 – 99).
%DAN Tahun adalah desimal termasuk abad.
%DENGAN Zona waktu.

Menggunakan gettimeofday untuk Mengukur Waktu Eksekusi Program

#termasuk
#termasuk

ke dalamutama() {

strukturwaktu mulai,akhir;
gettimeofday(&Mulailah,BATAL);

untuk (ke dalamSaya= 0;Saya<1e5 ;Saya++) {
}

gettimeofday(&akhir,BATAL);
printf ('Waktu yang dibutuhkan untuk menghitung hingga 10^5 adalah : %ld mikro detik ',
((akhir.tv_sec * 1000000 +akhir.tv_usec) -
(Mulailah.tv_sec * 1000000 +Mulailah.tv_usec)));

kembali 0;
}

Keluaran:

Contoh ini menunjukkan bahwa bagaimana gettimeofday() fungsi dapat digunakan untuk perhitungan waktu eksekusi suatu program.

Kesimpulan

Dengan cara ini, gettimeofday() fungsi mungkin digunakan di Linux. Untuk porting kode yang ada, gettimeofday() fungsi dapat digunakan tetapi dalam kode baru tidak boleh digunakan. jam_gettime() fungsi dapat digunakan sebagai pengganti gettimeofday() .