Maison > Java > javaDidacticiel > Pourquoi ArrayBlockingQueue utilise-t-il des variables finales locales pour l'optimisation des performances ?

Pourquoi ArrayBlockingQueue utilise-t-il des variables finales locales pour l'optimisation des performances ?

Patricia Arquette
Libérer: 2024-12-26 17:14:14
original
432 Les gens l'ont consulté

Why Does ArrayBlockingQueue Use Local Final Variables for Performance Optimization?

ArrayBlockingQueue : variables finales locales pour l'optimisation des performances

Dans la classe ArrayBlockingQueue, il est à noter que certaines méthodes copient les champs membres dans des variables finales locales avant invoquant des opérations critiques.

Par exemple, dans l'offre() method:

public boolean offer(E e) {
    ...
    final ReentrantLock lock = this.lock;
    lock.lock();
    ...
}
Copier après la connexion

Ici, this.lock est copié dans le verrou de variable local. Cette pratique s'étend également à d'autres champs membres, tels que les éléments E[] dans la méthode extract().

On pourrait s'interroger sur la nécessité de ces copies locales, étant donné que les champs membres sont déjà déclarés comme finaux. Cependant, une subtile optimisation des performances est en jeu.

Selon Doug Lea, l'auteur de la classe, la copie vers des variables locales produit un bytecode plus petit. Pour le code de bas niveau, cette optimisation peut réduire légèrement la surcharge associée à la récupération et à l'utilisation des champs membres, en particulier pour les méthodes fréquemment invoquées.

Comme indiqué dans un fil de discussion de la liste de diffusion core-libs-dev, cette optimisation " produit le plus petit bytecode, et c'est bien d'écrire du code un peu plus proche de la machine."

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal