Java导入会很慢吗? [复制]

Posted

技术标签:

【中文标题】Java导入会很慢吗? [复制]【英文标题】:Java import can be slow? [duplicate] 【发布时间】:2011-01-09 14:44:02 【问题描述】:

import package.* 是否比 import package.MyClass 慢? 如果是,在哪个场景中:运行时还是编译?

【问题讨论】:

***.com/questions/1983435/… 【参考方案1】:

import package.* 在编译时可能会变慢。如果该包中定义了很多东西,它也会减慢您的 IDE。

在运行时,there's no difference。

【讨论】:

citationrequired - 你有任何证据表明它在编译时变慢了吗? 你的意思是citation needed :P 不,我手头没有这样的证据。不过,我已经直接注意到 IDE 速度下降。 哦,我的引用刚刚出现:***.com/questions/1983435/…【参考方案2】:

这发生在编译期间。如果存在速度差异,则可以忽略不计。

【讨论】:

【参考方案3】:

如果导入的包异常巨大,我猜通配符导入可能会减慢编译速度,但实际上,它可以忽略不计。

导入语句在运行时无效。无论使用通配符还是显式导入,编译后的类都是相同的。

但是,通配符导入通常不被鼓励,因为它们会使代码难以阅读;当以这种方式导入多个包时,人类读者不清楚一个类型来自哪个包。

【讨论】:

不鼓励导入通配符的其他原因:javadude.com/articles/importondemandisevil.html 重新链接:确实如此,我自己也被这件事烫伤了。我在导入 java.util.* 时也被烧了几次,所以我可以使用 Date,然后添加 java.sql.*,反之亦然。这与链接描述的问题并不完全相同——当我添加导入时出现错误,而不是当其他一些糟糕的傻瓜检查我的代码时——但根本问题是相同的:你被一个模棱两可当您不关心其中一个选项时参考。也就是说,我必须承认我通常只是不担心它,并使用 import something.* 每当我想要超过 3 时。 如果您将鼠标悬停在声明中的类名上,现代 IDE(甚至一些古老的 IDE)会告诉您该类在哪个包中。我看不出这如何使您的代码可读性降低。如果你在不同的包中有两个同名的类,为了减少混淆,你应该在对象声明语句中使用完整的包名,但只有当你在一个类中使用两个同名的类时才需要这样做。 【参考方案4】:

因为编译器做了一些优化,运行时不会变慢。 它在编译时可能会更慢,但在 99,99% 的情况下,您可能并不在意......

【讨论】:

这并不是真正的优化,只是编译器将完全限定名编译到.class文件中(import是编译器指令)。

以上是关于Java导入会很慢吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

递归查询慢吗? [关闭]

Java 7 WatchService 对其他人来说很慢吗?

C ++中的异常真的很慢吗

可以找出哪些 MySQL 查询很慢吗?

Rails 3 Cli 执行命令真的很慢吗?

文件系统中的命名管道不是很慢吗?