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
252 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!

sumber:php.cn
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