Rumah > Java > javaTutorial > Mengapa ArrayBlockingQueue Menggunakan Pembolehubah Akhir Setempat untuk Pengoptimuman Prestasi?

Mengapa ArrayBlockingQueue Menggunakan Pembolehubah Akhir Setempat untuk Pengoptimuman Prestasi?

Patricia Arquette
Lepaskan: 2024-12-26 17:14:14
asal
432 orang telah melayarinya

Why Does ArrayBlockingQueue Use Local Final Variables for Performance Optimization?

ArrayBlockingQueue: Pembolehubah Akhir Setempat untuk Pengoptimuman Prestasi

Dalam kelas ArrayBlockingQueue, adalah ketara bahawa kaedah tertentu menyalin medan ahli ke pembolehubah akhir setempat sebelum menggunakan operasi kritikal.

Sebagai contoh, dalam tawaran() kaedah:

public boolean offer(E e) {
    ...
    final ReentrantLock lock = this.lock;
    lock.lock();
    ...
}
Salin selepas log masuk

Di sini, kunci ini disalin ke kunci pembolehubah setempat. Amalan ini meluas ke medan ahli lain juga, seperti item E[] dalam kaedah ekstrak().

Seseorang mungkin mempersoalkan keperluan salinan tempatan ini, memandangkan medan ahli telah diisytiharkan sebagai muktamad. Walau bagaimanapun, terdapat pengoptimuman prestasi halus yang sedang dimainkan.

Menurut Doug Lea, pengarang kelas, penyalinan ke pembolehubah tempatan menghasilkan kod bait yang lebih kecil. Untuk kod peringkat rendah, pengoptimuman ini boleh mengurangkan sedikit overhed yang berkaitan dengan mendapatkan semula dan menggunakan medan ahli, terutamanya untuk kaedah yang kerap digunakan.

Seperti yang dinyatakan dalam urutan senarai mel core-libs-dev, pengoptimuman ini " menghasilkan kod bait terkecil, dan ia bagus untuk menulis kod yang lebih dekat sedikit dengan mesin."

Atas ialah kandungan terperinci Mengapa ArrayBlockingQueue Menggunakan Pembolehubah Akhir Setempat untuk Pengoptimuman Prestasi?. 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