【问题标题】:Importing few Classes impact on performance导入少数类会影响性能
【发布时间】:2018-03-10 08:19:42
【问题描述】:

我正在构建一个数据结构,我导入了 2 个可以跳过的类,就像我使用 Arrays.newInstance() 来创建新数组而不是传统方法一样,所以我导入了 java.lang.reflect.Array
在打印我的数组之前,我将删除所有空元素并减小数组大小,当添加新元素时,resize() 方法将创建新数组并将其分配给原始数组。
那么,它对我的​​表现有多大影响。
我阅读了 Java import vs code performance ,它说它不会影响,但是如果我在我的项目中包含新类,为什么它不会影响我的性能。

【问题讨论】:

  • “如果我在我的项目中包含新课程,为什么它不会影响我的表现” - 因为这不是 import 所做的。 import 语句只允许您通过简单名称而不是全名来引用类型。它根本不会改变生成的字节码。它当然不会将Array 类代码添加到编译器的输出中,或者类似的东西。
  • @JonSkeet,你能告诉我使用 Array.newInstance() 创建新的泛型数组有什么好处吗?当我查看 oracle 文档时,它说它可以用来创建任意类型的动态数组,但我没有得到确切的想法。我想要实分,因为我使用这个会被扣分。
  • 这与这里提出的问题完全不同。请限制自己在每个帖子中回答一个问题。如果您想了解这一点,请使用完整的示例代码等提出一个新问题。
  • @JonSkeet 你可以看到第一行是关于这个的。
  • 不,您的问题是关于导入声明java.lang.reflect.Array 的成本。这与询问使用Array.newInstance() 创建数组是否有任何好处完全不同。如果您要问后一个问题,为什么要问导入?充其量,这个问题非常不清楚。

标签: java arrays performance data-structures import


【解决方案1】:

当您import 一个类或包到您的代码中时,您实际上并没有将代码添加到您的项目中。您只是让编译器知道您正在使用该特定类或包的简写名称而不是完整标题。正如docs tutorial 所说:

如果您编写的代码与该成员在同一个包中,或者如果该成员已被导入,您可以使用包成员的简单名称。 但是,如果您尝试使用来自不同包的成员并且该包尚未导入,则必须使用该成员的完全限定名

所以当你import,例如Rectangle 类时,你只是告诉编译器当你输入Rectangle 时你的意思是graphics.Rectangle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 2013-06-16
    • 2021-09-15
    • 2019-02-14
    相关资源
    最近更新 更多