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(); ... }
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!