Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengukur Masa Berlalu dengan Tepat dalam C dan C?

Bagaimanakah Saya Boleh Mengukur Masa Berlalu dengan Tepat dalam C dan C?

Patricia Arquette
Patricia Arquetteasal
2024-12-22 20:10:12724semak imbas

How Can I Accurately Measure Elapsed Time in C and C  ?

Pengukuran Masa Berlalu yang Cekap dalam C dan C

Mengukur masa berlalu dengan tepat adalah penting untuk analisis prestasi dalam pengaturcaraan. Walau bagaimanapun, fungsi C standard time() boleh menjadi tidak boleh dipercayai untuk tugasan jangka pendek.

Menggunakan gettimeofday() dalam C

Untuk menangani isu ini, pengaturcara C boleh gunakan fungsi gettimeofday(), yang mengembalikan masa semasa dengan ketepatan mikrosaat. Berikut ialah contoh:

#include <sys/time.h>

struct timeval startTV, endTV;

gettimeofday(&startTV, NULL); // Start time

// Perform long-running tasks

gettimeofday(&endTV, NULL); // End time

time_t diffSeconds = endTV.tv_sec - startTV.tv_sec;
long diffMicroseconds = endTV.tv_usec - startTV.tv_usec;

printf("Time taken: %ld seconds, %ld microseconds\n", diffSeconds, diffMicroseconds);

Menggunakan std::chrono dalam C

Dalam C , perpustakaan std::chrono menyediakan penyelesaian yang lebih moden dan mudah alih untuk mengukur masa berlalu. Pertimbangkan contoh ini:

#include <chrono>

using namespace std::chrono;

auto begin = steady_clock::now(); // Start time

// Perform long-running tasks

auto end = steady_clock::now(); // End time

duration<double, nano> diff = end - begin;

cout << "Time taken: " << diff.count() << " nanoseconds" << endl;

Memahami Keputusan

Keluaran gettimeofday() dan std::chrono akan mengembalikan perbezaan masa dalam saat dan mikrosaat/ nanosaat. Contohnya:

  • Masa diambil: 4 saat, 25 mikrosaat (menggunakan gettimeofday())
  • Masa diambil: 26,339 mikrosaat (menggunakan std::chrono)

Dalam contoh pertama, masa berlalu ialah 4.025 saat, manakala dalam contoh kedua, ia ialah 0.026339 saat. Ambil perhatian bahawa std::chrono mengembalikan nanosaat secara lalai, jadi anda mungkin perlu menukarnya kepada mikrosaat atau saat secara manual jika mahu.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengukur Masa Berlalu dengan Tepat dalam C dan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn