Question

Si j'active la génération d'informations de débogage avec Javac, les fichiers de classe ont une taille supérieure de 20 à 25%. Est-ce que cela a un impact sur les performances lors de l'exécution du programme Java? Si oui, à quelles conditions et combien. Je m'attends à un léger impact sur le chargement des classes car les fichiers sont plus volumineux, mais cela devrait être minime.

Était-ce utile?

La solution

Dans toutes les langues, les informations de débogage sont des méta-informations. De par sa nature, il augmente la taille des fichiers objets, augmentant ainsi le temps de chargement. Lors de l'exécution en dehors d'un débogueur, ces informations sont en réalité complètement ignorées. Comme indiqué (bien que pas clairement) dans la spécification JVM les informations de débogage sont stockées en dehors du flux de bytecode. Cela signifie qu’au moment de l’exécution, il n’ya aucune différence dans le fichier de classe. Si vous voulez être sûr, essayez-le: -).

Ps. Pour le débogage, il est souvent utile de désactiver l'optimisation. Cela a un impact sur les performances.

Autres conseils

Désactiver le débogage seul ne devrait pas faire la différence. Mais une fois que vous désactivez le débogage et activez l'optimisation, vous devriez voir une différence, car cela entraîne certaines optimisations statiques au moment de la compilation. De cette manière, même votre code optimisé pour les points chauds devient plus rapide au moment de l'exécution.

Mais jusqu'à présent, le compromis entre obtenir des traces de pile complètes ou améliorer les performances de l'utilisateur, a toujours été celui des traces de pile. Après tout, les utilisateurs sont disposés à dépenser 1 000 dollars par an pour obtenir une machine plus rapide, mais ne sont pas disposés à passer 15 minutes à vous donner des messages d'erreur significatifs pour résoudre leurs problèmes.

Après les années, je suis plus disposé à valoriser mes 15 minutes de plus que les 1000 $ de l’utilisateur. :)

Veuillez noter que, JDK1.3 ne prenant pas en compte les indicateurs d'optimisation, "l'optimisation au moment de la compilation n'est pas nécessaire"

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top