Rumah > pembangunan bahagian belakang > C++ > Mengapakah `masa()` Kadangkala Mengembalikan Nilai Yang Sama Sebelum dan Selepas Tugasan Singkat?

Mengapakah `masa()` Kadangkala Mengembalikan Nilai Yang Sama Sebelum dan Selepas Tugasan Singkat?

Susan Sarandon
Lepaskan: 2025-01-03 15:07:40
asal
300 orang telah melayarinya

Why Does `time()` Sometimes Return the Same Value Before and After a Short Task?

Mudah Mengukur Masa Berlalu

Soalan:

Apabila mengukur masa berlalu dalam atur cara menggunakan time(), mengapa nilai sebelum dan selepas boleh kekal sebagai sama?

Penjelasan:

masa() mengembalikan masa semasa dalam beberapa saat sejak Epoch. Jika jangka masa untuk diukur adalah pendek, perbezaan antara nilai sebelum dan selepas mungkin terlalu kecil untuk dikesan.

Penyelesaian:

Untuk mengukur pendek dengan tepat jangka masa, pertimbangkan untuk menggunakan kaedah alternatif:

C Masa Berstruktur Pengukuran:

struct timeval startTV, endTV;
gettimeofday(&startTV, NULL); 
// Execute time-consuming tasks
gettimeofday(&endTV, NULL); 

timersub(&endTV, &startTV, &diff);
printf("**time taken = %ld %ld\n", diff.tv_sec, diff.tv_usec);
Salin selepas log masuk
  • struktur masa mewakili nilai masa dengan ketepatan sehingga mikrosaat.
  • gettimeofday() memperoleh masa semasa hari.
  • timersub() mengira perbezaan antara dua struktur timeval.
  • Hasilnya dilaporkan dalam beberapa saat (diff.tv_sec) dan mikrosaat (diff.tv_usec).

Pengukuran Masa Ketepatan Gaya C 11:

#include <chrono>

std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now();
// Execute time-consuming tasks
std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();

std::cout << "Time difference = " << std::chrono::duration_cast<std::chrono::microseconds>(end - begin).count() << "[µs]" << std::endl;
std::cout << "Time difference = " << std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin).count() << "[ns]" << std::endl;
Salin selepas log masuk
  • std:: perpustakaan chrono menyediakan masa berketepatan tinggi pengukuran.
  • std::chrono::steady_clock mengukur masa sejak titik masa sewenang-wenangnya tidak diketahui.
  • Perbezaan masa dikira sebagai objek std::chrono::duration, yang boleh ditukar kepada mikrosaat atau nanosaat.

Atas ialah kandungan terperinci Mengapakah `masa()` Kadangkala Mengembalikan Nilai Yang Sama Sebelum dan Selepas Tugasan Singkat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan