108 votes

Y a-t-il des fonctions inline dans java ?

Y a-t-il qu'un concept d’inline fonctionne en java, ou de son remplacement, quelque chose d’autre ? S’il y a, comment s’en sert-on ? J’ai entendu dire que , et `` les méthodes sont les fonctions inline. Pouvons-nous créer notre propre fonction inline ?

118voto

notnoop Points 30218

En Java, les optimisations sont généralement fait à la JVM. Au moment de l'exécution, la JVM effectuer quelques "compliqué", analyse afin de déterminer les méthodes à la ligne. Il peut être agressif dans l'in-lining, et la JVM Hotspot peut effectivement inline non-finale méthodes.

Les compilateurs java presque jamais inline tout appel de méthode (la JVM fait au moment de l'exécution). Ils ne inline compiler les constantes de temps (par exemple, final statique de valeurs primitives). Mais pas de méthodes.

Pour plus de ressources:

  1. Article: Java HotSpot Rendement Moteur: Méthode Inline Exemple

  2. Wiki: Inline dans OpenJDK, pas entièrement rempli, mais contient des liens vers des discussions utiles.

14voto

Thomas Owens Points 45042

Java ne fournit pas un moyen de manuellement suggèrent qu’une méthode doit être inline. Comme @notnoop le dit dans les commentaires, la fonctionnalité inline est généralement effectuée par la JVM au moment de l’exécution.

14voto

Arne Burmeister Points 8423

Non, il n'y a pas de fonction en ligne en java. Oui, vous pouvez utiliser une méthode statique n'importe où dans le code lorsqu'il est placé dans une classe publique. Le compilateur java peut ne inline expansion sur un statique ou méthode finale, mais qui n'est pas garanti.

Généralement, de telles optimisations de code sont effectuées par le compilateur en combinaison avec la JVM/ECE/HotSpot pour les segments de code utilisé très souvent. Aussi d'autres concepts d'optimisation comme le registre de déclaration des paramètres ne sont pas connus en java.

Les optimisations ne peut pas être contraint par la déclaration en java, mais fait par et d'un compilateur JIT. Dans de nombreuses autres langues, ces déclarations ne sont souvent que le compilateur conseils (vous pouvez déclarer plus d'enregistrer les paramètres que le processeur a, le reste est ignoré).

Déclarant java les méthodes statiques, finale ou privée, sont également des conseils pour le compilateur. Vous devriez l'utiliser, mais pas de garant. La performance Java est dynamique, pas statique. D'abord appel à un système est toujours lent à cause de chargement de classe. À côté des appels sont plus rapides, mais en fonction de la mémoire et de l'exécution de la plupart des communes appels sont optimisés withinthe système en cours d'exécution, si un serveur peut devenir plus rapide en cours d'exécution!

4voto

GreenieMeanie Points 1652

Ce que vous avez dit ci-dessus est correct. Parfois, les méthodes finales sont créées en tant qu'inline, mais il n'y a pas d'autre moyen de créer explicitement une fonction inline en java.

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