通配符导入和所需类导入之间的性能差异

什么是性能之间的复杂性

java.io.* 

 java.io.File 

PS。

我知道第一个文件将包含java.io.*每个文件,下一个文件只包含选定的类文件。

在运行时0。

两者都生成相同的字节代码

导入在编译时解析为完全限定名称。 没有运行时性能差异。 如果查看生成的字节码,它们将是相同的。

使用一种或另一种forms可能存在编译时间开销,但它可能很小,没有人关心它。

我知道第一个文件将包含java.io. *中的每个文件,下一个文件只包含选定的类文件。

不完全是。 明星导入的作用是使所有类名可用。 实际的类本身并不是“包含”的……在C或c ++编程语言中。


许多人使用显式导入而不是通配符导入的真正原因是:

  • 显式导入清楚地记录了类直接使用的外部类,前提是您不在代码中留下冗余导入。

  • 显式导入可避免在导入包含具有相同(简单)类名的类的两个包时出现名称冲突的问题。

  • 显式导入避免了脆弱性问题,其中有人将新类添加到您导入了通配符的某个包中。 由于名称冲突,这可能导致以前用于编译的代码中出现新的编译错误(参见前面的内容)。

现代IDE具有加速器,代码省略和其他function,可帮助您在使用显式导入时控制导入。

对运行时没有性能影响,可能会对编译时间产生影响: http : //www.javaperformancetuning.com/news/qotm031.shtml

不,对运行时性能没有影响。 因为import语句是编译器指令而不是转换为字节代码。 正如@ Stephen C所述,只有编译时开销。

特定导入和通配符导入声明之间没有性能差异。

除非在程序中使用该类,否则不会在编译时或运行时读取导入包中的类的信息。 import语句只是告诉编译器在哪里找到类。 特定导入和通配符导入声明之间没有性能差异。

(Liang,Daniel Y.“计算机,程序和Java简介。”Java编程简介。综合版。第9版.Np:Pearson,第24页。打印。)

它们之间没有性能差异。

在jsp中如果你在EL中有’Undefined Variables’那么应该避免使用通配符import语句。 通配符导入将对运行时性能产生巨大影响(由于“静态字段和方法引用”处理)。