Rumah > Java > javaTutorial > Adakah System.nanoTime() dalam Java Masih Alat Pengukuran Masa yang Boleh Dipercayai?

Adakah System.nanoTime() dalam Java Masih Alat Pengukuran Masa yang Boleh Dipercayai?

DDD
Lepaskan: 2024-11-12 00:55:03
asal
1069 orang telah melayarinya

Is System.nanoTime() in Java Still a Reliable Time Measurement Tool?

Adakah System.nanoTime() dalam Java Benar-Benar Tidak Berguna?

Soalan:

A catatan blog bertajuk "Berhati-hati terhadap System.nanoTime() dalam Java" menimbulkan kebimbangan bahawa pada sistem x86, System.nanoTime() berkemungkinan mengembalikan nilai masa yang salah disebabkan penggunaan pembilang khusus CPU. Dalam sistem berbilang teras, penjadualan benang boleh menyebabkan pemproses dengan pembilang yang lebih rendah ditetapkan, membawa kepada nilai negatif untuk perbezaan masa.

Jawapan:

The dakwaan catatan blog telah ditulis pada tahun 2011 dan tidak lagi tepat. Kemas kini sistem pengendalian seterusnya telah menyelesaikan isu ini pada Windows dan Linux.

Windows:

Pada Pek Perkhidmatan Windows XP 2 dan lebih baru, System.nanoTime() menggunakan QueryPerformanceCounter /QueryPerformanceFrequency API, yang dilaksanakan oleh Hardware Abstraction Layer (HAL) untuk menyediakan sumber masa yang konsisten merentas pemproses.

Linux:

Linux clock_gettime(CLOCK_REALTIME) fungsi memastikan bahawa masa adalah konsisten merentas semua pemproses. Mulai versi kernel 2.6.18, sumber jam selamat digunakan jika pembilang cap masa frekuensi tidak disegerakkan atau berubah-ubah dikesan.

Seni Bina Lain:

Terdapat maklumat terhad tersedia mengenai seni bina lain, seperti SPARC dan Solaris. Walau bagaimanapun, umumnya diandaikan bahawa mesin maya moden (VM) menyediakan sumber masa yang konsisten untuk sistem pengendalian tetamu, tanpa mengira perkakasan asas.

Kesimpulan:

Sistem .nanoTime() kekal sebagai kaedah yang sah untuk mengukur perbezaan masa di Jawa. Kebimbangan yang dibangkitkan dalam catatan blog 2011 telah ditangani dan tidak terpakai pada pelaksanaan sistem moden.

Atas ialah kandungan terperinci Adakah System.nanoTime() dalam Java Masih Alat Pengukuran Masa yang Boleh Dipercayai?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan