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 ?
Réponses
Trop de publicités?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:
Article: Java HotSpot Rendement Moteur: Méthode Inline Exemple
Wiki: Inline dans OpenJDK, pas entièrement rempli, mais contient des liens vers des discussions utiles.
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!