117 votes

Y a-t-il une raison de performance pour déclarer les paramètres de la méthode final en Java ?

Y a-t-il une raison de performance pour déclarer les paramètres de la méthode final en Java ?

Comme dans :

Contre :

En supposant que est seulement lu et jamais modifié en .

98voto

Robin Points 15032

Le mot-clé final n'apparaît pas dans le fichier de classe pour les variables locales et les paramètres, donc il ne doit pas affecter les performances d'exécution. C'est seulement l'utilisation est de clarifier les codeurs intention que la variable ne soit pas changé (que beaucoup considèrent comme douteux en raison de son utilisation), et de traiter avec les classes internes anonymes.

Il y a beaucoup d'argument sur le fait que le modificateur final sur la méthode elle-même a aucun gain de performance étant donné que les méthodes seront intégrées par le compilateur optimisant au moment de l'exécution de toute façon, quel que soit le modificateur. Dans ce cas, il doit également être utilisés pour limiter la surcharge de la méthode.

15voto

Dobes Vandermeer Points 1846

Le seul avantage à un paramètre final est qu’il peut être utilisé dans les classes imbriquées anonymes. Si un paramètre n’est jamais modifié, le compilateur détecte déjà que dans le cadre de son fonctionnement normal même sans le modificateur final. C’est assez rare que les bogues sont causées par un paramètre étant assigné de façon inattendue - si vos méthodes sont assez grands pour le besoin de ce niveau d’ingénierie, font leur petits - méthode que vous appelez ne pouvez pas modifier vos paramètres.

6voto

Mike Blandford Points 2050

Je ne peux pas penser à une raison pourquoi le compilateur de soins si vous avez déclaré un paramètre d'une méthode finale ou pas.

Mais la vraie réponse à cette question est, écrire deux fonctions, l'une avec final paramètres et l'une avec régulièrement des paramètres. Exécuter un million de fois chaque et voir si il n'y a aucun signe d'exécution différence.

Si vous êtes inquiet au sujet de la performance, il est très important de faire un certain profilage de travail sur votre code et de savoir exactement qu'est-ce que vous ralentir. C'est presque certainement pas ce que vous attendez qu'il soit :)

0voto

Edmondo1984 Points 5059

Je dirais que vous n’écrivez jamais micro points de repère. Vous ne savez pas quelle optimisation du JIT peut faire et quand et vous obtiendriez probablement une mauvaise idée de comment il se comporte juste faire un « cas de test simple »

-1voto

branchgabriel Points 2436

Les compilateurs qui fonctionnent après chargement, tels que les compilateurs JIT, de classe peuvent tirer parti des méthodes finales. Par conséquent, les méthodes déclarées finales pourraient avoir certains avantages de performance.

http://www.javaperformancetuning.com/Tips/final.shtml

Oh et une autre bonne ressource

http://mindprod.com/jgloss/final.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X