Quelle est la mémoire et l'utilisation de la performance par rapport à la création d'un objet avec un constructeur? p>
L'utilisation ici consiste à créer un Référence: Item 2: Considérez un constructeur face à de nombreux paramètres de constructeur < / EM> , réimprimé dans Création et détruire des objets Java: Partie 1 em> , extrait de Efficace Java Deuxième édition em> par Joshua Bloch. P> SET
list
3 Réponses :
Vous avez le constructeur supplémentaire-objet, qui est rejeté après la création de l'objet. Vous pouvez donc avoir un impact sur l'utilisation et la vitesse de la mémoire. Mais le Java-VM optimise très fortement, en particulier le serveur-VM (Java -server), de sorte que le VM peut optimiser complètement le constructeur. Donc, ma suggestion est que vous devriez mesurer l'impact réel (comme toujours si vous vous souciez de la performance) et décidez si l'impact est trop gros. P>
+1, c'est un test non trivial de construire, mais je ferai. Je n'ai aucun contrôle sur ce que JVM est utilisé cependant, alors je cherchais des généralités.
Il est difficile de dire à votre description initiale, mais si vous êtes préoccupé par la transmission d'une collection
Je pense qu'il crée les millions d'objets avec le modèle de constructeur. Cela signifie pour chaque million d'objets et un objet de constructeur temporaire supplémentaire.
Il pourrait probablement simplement ajouter une méthode .Clear () ou quelque chose au constructeur chaque itération pour vider son contenu.
Le coût est négligeable depuis que la référence du générateur peut être recueillie immédiatement après la construction de l'objet. p>
L'impact de la création de 1M d'objets supplémentaires doit être inférieur à 10 dans toutes les circonstances. P>
En fait, j'attendrais moins de 1s, même sur un netbook moyen ou un téléphone intelligent de classe supérieure.
@sfusseneger: Yeap, j'ai créé des objets 1M dans une simple boucle et cela m'a fallu environ 400 ms ... Je pense que 10 s devraient couvrir tous les cas, mais je suis d'accord avec vous.
Ce n'est probablement pas un bon test car il prend le JVM un peu de temps pour se réchauffer et optimiser. Le code fonctionnera un peu plus lentement pendant qu'il est optimisé.
Pouvez-vous s'il vous plaît ajouter un lien vers le modèle Builder de Bloch? (C'est-à-dire la description de Bloch d'origine)
Vous pouvez trouver le modèle Builder de Bloch dans le livre Java efficace ou @ rwhasen.blogspot.com/2007/07/...
@chburd: J'ai également remarqué ce premier lien dans Google, mais j'ai des doutes que c'est la description originale de Bloch.
@trashgod, merci pour le lien