Y a-t-il une pénalité pour ajouter
implements Serializable
à une classe Java ? Impact sur la taille de l'objet instancié ou sur les performances ?
Y a-t-il une pénalité pour ajouter
implements Serializable
à une classe Java ? Impact sur la taille de l'objet instancié ou sur les performances ?
Le coût est proche de zéro, il ne vaut pas la peine de s'en préoccuper.
Quelques détails supplémentaires :
Il n'y a pas d'impact sur les performances, sauf si vous effectuez une sérialisation/désérialisation, mais il y a des compromis à faire en termes de conception d'API.
De Java efficace par Joshua Bloch
- L'un des principaux inconvénients de la mise en œuvre de Serializable est qu'elle réduit la possibilité de modifier l'implémentation d'une classe une fois qu'elle a été publiée
- Un deuxième coût de l'implémentation de Serializable est qu'il augmente la probabilité de bogues et de failles de sécurité.
- Un troisième coût de l'implémentation de Serializable est qu'il augmente la charge de test associée à la publication d'une nouvelle version d'une classe.
La mesure dans laquelle ils s'appliquent à vous dépend de votre cas d'utilisation.
Vous devez toujours considérer en premier lieu les frais d'entretien. Le coût d'une application déployée pendant sa durée de vie peut représenter plusieurs fois le coût de son développement.
Dans ce cas, le coût de rendre une classe sérialisable, mais qui n'est pas réellement utilisée pour la sérialisation pourrait causer des bogues ou une confusion bien plus grande que le coût de la performance. Par exemple, si cela prend une minute ou le temps de quelqu'un pour déterminer que le sérialisable n'est pas nécessaire, cela peut coûter bien plus que les quelques nano-secondes de temps de démarrage supplémentaire que l'application subit.
Si vous avez réellement besoin qu'il soit sérialisable, vous ne pouvez pas le comparer à la version non sérialisable car seul le premier cas fera réellement le travail demandé.
Serializable
est juste une interface "marqueur". Elle ne vous oblige pas à mettre en œuvre des méthodes.
La seule chose est qu'il est recommandé d'avoir un static final long serialVersionUID
pour aider l'API de sérialisation. Cela coûte un seul long
par classe sérialisée.
Vous pourriez vouloir vérifier cet article sur l'API de sérialisation Java . Il décrit en détail la plupart des problèmes de sérialisation/désérialisation.
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.