2010-01-26 3 views
2

Le package d'importation est-il plus lent que le fichier import.MyClass? Si oui, dans quel scneario: runtime ou compilation?L'importation Java peut être lente?

+1

http://stackoverflow.com/questions/1983435/eclipse-java-is-it-harmful-to-import-java-namespace/1984499#1984499 –

Répondre

7

import package.* peut être plus lent au moment de la compilation. Il peut également ralentir votre EDI, s'il y a beaucoup de choses définies dans ce paquet.

Au moment de l'exécution, there's no difference.

+0

'{citationrequired}' - avez-vous des preuves que c'est plus lent au moment de la compilation? – skaffman

+0

Vous voulez dire {{citation needed}} ': P Non, je n'ai pas de telles preuves à portée de main. J'ai cependant remarqué le ralentissement de l'IDE. – Thomas

+0

Oh, ma citation vient d'apparaître: http://stackoverflow.com/questions/1983435/eclipse-java-is-it-harmful-to-import-java-namespace/1984499#1984499 – Thomas

4

Cela se produit pendant la compilation. S'il y a une différence de vitesse, c'est négligeable. Comme le compilateur effectue certaines optimisations, il ne sera pas plus lent au moment de l'exécution.

2

Il pourrait être plus lent au moment de la compilation, mais dans 99,99% des cas, vous ne vous souciez probablement pas ...

+1

Ce n'est pas vraiment une optimisation, c'est juste que le compilateur compile le nom complet dans le fichier .class (import est une directive de compilation). –

3

Je suppose qu'une importation générique pourrait ralentir la compilation un peu si le paquet importé était exceptionnellement énorme mais en pratique, c'est négligeable.

Les instructions d'importation n'ont aucun effet lors de l'exécution. La classe compilée est identique, que les importations génériques ou explicites soient utilisées. Cependant, les importations génériques sont généralement déconseillées, car elles rendent le code difficile à lire; ce n'est pas clair pour un lecteur humain de savoir de quel paquet provient un type lorsque plusieurs paquets ont été importés de cette façon.

+1

Autres raisons pour lesquelles les importations de caractères génériques sont déconseillées: http://javadude.com/articles/importondemandisevil.html –

+0

RE le lien: Tout à fait vrai, je me suis brûlé dessus moi-même. J'ai également été brûlé plusieurs fois lorsque j'ai importé java.util. * Afin que je puisse utiliser Date, puis plus tard java.sql. *, Ou vice versa. Ce n'est pas exactement le même problème que le lien décrit - l'erreur est apparue quand j'ai ajouté l'importation, pas quand un autre aspirant pauvre a vérifié mon code - mais le problème sous-jacent est le même: Vous êtes brûlé par un ambigu référence lorsque vous ne vous souciez pas de l'une des options. Cela dit, je dois avouer que je ne m'inquiète généralement pas, et que j'importe quelque chose. * Chaque fois que je veux plus de 3. – Jay

+0

Les IDE modernes (et même certains anciens) vous diront dans quel paquet se trouve une classe si vous survolez le nom de la classe dans une déclaration. Je ne vois pas comment cela rend votre code moins lisible. Si vous avez deux classes avec le même nom dans des paquets différents, pour réduire la confusion, vous devez utiliser le nom complet du paquet dans l'instruction de déclaration d'objet, mais cela n'est vraiment nécessaire que si vous utilisez deux classes identiques dans une classe. – belgariontheking

Questions connexes