Influence du paramétrage des collections sur les performances
8 réponses
Jean-Baptiste LE DUIGOU
Depuis la version 5 de Java il est possible (et recommand=E9) de
param=E9tr=E9 les collections en sp=E9cifiant le type des instances qu'elle
va contenir.
Est-ce que ce param=E9trage =E0 des cons=E9quence significative sur les
performances d'une application ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Mayeul
Jean-Baptiste LE DUIGOU wrote:
Depuis la version 5 de Java il est possible (et recommandé) de paramétré les collections en spécifiant le type des instances qu'elle va contenir. Est-ce que ce paramétrage à des conséquence significative sur les performances d'une application ?
Non. De manière générale, avec ou sans l'utilisation des génériques, le bytecode généré est le même, donc pas de différence à l'exécution.
Les génériques sont un outil pour la phase de compilation, qui sert à mieux assurer le typage des données. Et à éviter des millions de cast explicites.
-- Mayeul
Jean-Baptiste LE DUIGOU wrote:
Depuis la version 5 de Java il est possible (et recommandé) de
paramétré les collections en spécifiant le type des instances qu'elle
va contenir.
Est-ce que ce paramétrage à des conséquence significative sur les
performances d'une application ?
Non. De manière générale, avec ou sans l'utilisation des génériques, le
bytecode généré est le même, donc pas de différence à l'exécution.
Les génériques sont un outil pour la phase de compilation, qui sert à
mieux assurer le typage des données. Et à éviter des millions de cast
explicites.
Depuis la version 5 de Java il est possible (et recommandé) de paramétré les collections en spécifiant le type des instances qu'elle va contenir. Est-ce que ce paramétrage à des conséquence significative sur les performances d'une application ?
Non. De manière générale, avec ou sans l'utilisation des génériques, le bytecode généré est le même, donc pas de différence à l'exécution.
Les génériques sont un outil pour la phase de compilation, qui sert à mieux assurer le typage des données. Et à éviter des millions de cast explicites.
Est-ce que ce paramétrage à des conséquence significative sur les performances d'une application ?
Oui cela aura une incidence. Quand a savoir si elle est significative... L'utilisation des génériques permet au compilateur de vérifier mieux le typage du reste du programme, donc il évite des casts explicites, qui du coup n'ont plus lieu à l'exécution.
Bonjour, Il me semble qu'il y a une contradiction évidente entre ta réponse et celle fournie par Mayeul...
En regardant ici http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html on peut lire, entre autre :
"Generics are implemented by type erasure: generic type information is present only at compile time, after which it is erased by the compiler."
Donc si je comprends bien et que je n'ai pas raté de points importants dans le reste du texte, on peut conclure que les génériques ne change rien en ce qui concerne l'exécution.
Donc un programme avec des génériques sera au moins aussi efficace que le même programme sans génériques.
devient donc : un programme sera tout aussi efficace (ou inefficace) avec ou sans génériques :-)
Jean-Baptiste LE DUIGOU <jb.leduigou@gmail.com> writes:
Est-ce que ce paramétrage à des conséquence significative sur les
performances d'une application ?
Oui cela aura une incidence. Quand a savoir si elle est significative...
L'utilisation des génériques permet au compilateur de vérifier mieux le
typage du reste du programme, donc il évite des casts explicites, qui du
coup n'ont plus lieu à l'exécution.
Bonjour,
Il me semble qu'il y a une contradiction évidente entre ta réponse et
celle fournie par Mayeul...
En regardant ici
http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html
on peut lire, entre autre :
"Generics are implemented by type erasure: generic type information is
present only at compile time, after which it is erased by the compiler."
Donc si je comprends bien et que je n'ai pas raté de points importants
dans le reste du texte, on peut conclure que les génériques ne change
rien en ce qui concerne l'exécution.
Donc un programme avec des génériques sera au moins aussi efficace que
le même programme sans génériques.
devient donc : un programme sera tout aussi efficace (ou inefficace)
avec ou sans génériques :-)
Est-ce que ce paramétrage à des conséquence significative sur les performances d'une application ?
Oui cela aura une incidence. Quand a savoir si elle est significative... L'utilisation des génériques permet au compilateur de vérifier mieux le typage du reste du programme, donc il évite des casts explicites, qui du coup n'ont plus lieu à l'exécution.
Bonjour, Il me semble qu'il y a une contradiction évidente entre ta réponse et celle fournie par Mayeul...
En regardant ici http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html on peut lire, entre autre :
"Generics are implemented by type erasure: generic type information is present only at compile time, after which it is erased by the compiler."
Donc si je comprends bien et que je n'ai pas raté de points importants dans le reste du texte, on peut conclure que les génériques ne change rien en ce qui concerne l'exécution.
Donc un programme avec des génériques sera au moins aussi efficace que le même programme sans génériques.
devient donc : un programme sera tout aussi efficace (ou inefficace) avec ou sans génériques :-)
Est-ce que ce paramétrage à des conséquence significative sur les performances d'une application ?
Oui cela aura une incidence. Quand a savoir si elle est significative... L'utilisation des génériques permet au compilateur de vérifier mieux le typage du reste du programme, donc il évite des casts explicites, qui du coup n'ont plus lieu à l'exécution.
Bonjour, Il me semble qu'il y a une contradiction évidente entre ta réponse et celle fournie par Mayeul...
En regardant ici http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html on peut lire, entre autre :
"Generics are implemented by type erasure: generic type information is present only at compile time, after which it is erased by the compiler."
Donc si je comprends bien et que je n'ai pas raté de points importants dans le reste du texte, on peut conclure que les génériques ne change rien en ce qui concerne l'exécution.
Tout à fait.
La raison étant, que les casts se font toujours quand on utilise les génériques. Il est toujours nécessaire de vérifier qu'un objet est bien de type attendu à l'exécution.
La différence, entre l'utilisation ou non des génériques, est que les casts sont implicites avec les génériques : on n'a pas besoin de les taper dans le code source.
-- Mayeul
Xavier Nayrac wrote:
Alain Ketterlin a écrit :
Jean-Baptiste LE DUIGOU <jb.leduigou@gmail.com> writes:
Est-ce que ce paramétrage à des conséquence significative sur les
performances d'une application ?
Oui cela aura une incidence. Quand a savoir si elle est significative...
L'utilisation des génériques permet au compilateur de vérifier mieux le
typage du reste du programme, donc il évite des casts explicites, qui du
coup n'ont plus lieu à l'exécution.
Bonjour,
Il me semble qu'il y a une contradiction évidente entre ta réponse et
celle fournie par Mayeul...
En regardant ici
http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html
on peut lire, entre autre :
"Generics are implemented by type erasure: generic type information is
present only at compile time, after which it is erased by the compiler."
Donc si je comprends bien et que je n'ai pas raté de points importants
dans le reste du texte, on peut conclure que les génériques ne change
rien en ce qui concerne l'exécution.
Tout à fait.
La raison étant, que les casts se font toujours quand on utilise les
génériques. Il est toujours nécessaire de vérifier qu'un objet est bien
de type attendu à l'exécution.
La différence, entre l'utilisation ou non des génériques, est que les
casts sont implicites avec les génériques : on n'a pas besoin de les
taper dans le code source.
Est-ce que ce paramétrage à des conséquence significative sur les performances d'une application ?
Oui cela aura une incidence. Quand a savoir si elle est significative... L'utilisation des génériques permet au compilateur de vérifier mieux le typage du reste du programme, donc il évite des casts explicites, qui du coup n'ont plus lieu à l'exécution.
Bonjour, Il me semble qu'il y a une contradiction évidente entre ta réponse et celle fournie par Mayeul...
En regardant ici http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html on peut lire, entre autre :
"Generics are implemented by type erasure: generic type information is present only at compile time, after which it is erased by the compiler."
Donc si je comprends bien et que je n'ai pas raté de points importants dans le reste du texte, on peut conclure que les génériques ne change rien en ce qui concerne l'exécution.
Tout à fait.
La raison étant, que les casts se font toujours quand on utilise les génériques. Il est toujours nécessaire de vérifier qu'un objet est bien de type attendu à l'exécution.
La différence, entre l'utilisation ou non des génériques, est que les casts sont implicites avec les génériques : on n'a pas besoin de les taper dans le code source.
-- Mayeul
Alain Ketterlin
Mayeul writes:
Xavier Nayrac wrote:
"Generics are implemented by type erasure: generic type information is present only at compile time, after which it is erased by the compiler."