en Java, quelle est la différence (en termes de performance et p>
6 Réponses :
Dans votre première version, la boucle continue si elle frappe une exception, dans la deuxième version, la boucle continue après le bloc de capture. C'est la différence la plus importante de ces extraits de code. P>
Merci. Y a-t-il une pénalité de performance si je mets des captures d'essai dans une boucle?
@Martin: Ces boucles font différentes choses. Discussions de performance entourant le code que différentes choses sont inutiles. Si vous êtes vraiment vraiment vraiment vraiment intéressé vraiment vraiment pour comparer la performance du code qui fait différentes choses que vous pouvez simplement le mesurer.
@ Martin08 Si sa réponse l'accepte de sorte que d'autres lisant cela puisse apprendre.
Vous pouvez utiliser les deux, mais tout dépend de ce que vous voulez faire. Si vous souhaitez continuer l'exécution après la fin de la boucle une fois que vous le faites le premier. Si vous voulez attraper une exception, arrêtez d'exécuter la boucle que vous faites la seconde. Performance sage tout dépend de ce que vous voulez faire avec cela. P>
La principale différence est que dans le premier extrait de code, même s'il existe une exception à partir du bloc d'essai et qu'il est pris en charge de la boucle de la boucle continue. Dans le deuxième extrait si une exception est lancée, la boucle de la boucle est sortie. En effet, la boucle entière est dans le bloc d'essai. P>
Outre la différence dans votre logique avec la poursuite de la poursuite. Ce n'est pas une différence notable entre et p>
Non, je suis tout à fait sûr qu'il n'y a absolument aucune différence d'un point de performance ici (ignorant le fait évident sur la boucle). Dans les deux cas, vous créez exactement une entrée dans la table d'exception - seules les valeurs de PC (c'est-à-dire dans quelle plage d'exception sont valides) seront un peu différentes.
IE Si vous supposez que ce qui suit est le tableau d'exception la seule chose qui "LL changer sont les valeurs x, y et z .. p>
Depuis que vous avez posé des questions sur la performance des deux versions du code, je me rappelle "Java pratique" (Addison-Wesley 2000), qui recommande à Praxis 23: Placez les blocs en dehors des boucles em> . La raison implique l'exécution du code sur un JVM avec le compilateur JIT éteint. Dans ce cas, l'absence d'optimisations de JIT de temps d'exécution entraîne des branches supplémentaires dans l'opcode, ce qui entraîne une réduction des performances. Vous pouvez lire JIT DOCS de 2014 ici: HTTP : //www.oracle.com/techNetwork/Articles/java/architect-Evans-pt1-2266278.html P>