Java 导入与代码性能
我想知道如果我在我的java程序中包含了许多,它会影响我的代码的性能(例如,程序会变慢)吗?Java 中 背后的逻辑是否与 C 中的逻辑相同?import
import
include
我想知道如果我在我的java程序中包含了许多,它会影响我的代码的性能(例如,程序会变慢)吗?Java 中 背后的逻辑是否与 C 中的逻辑相同?import
import
include
它会影响我的代码的性能(例如,程序会变慢)吗?
不,它不会影响代码的性能。
二进制文件(类文件)的大小不会增加,因为导入不是使用任何剪切和粘贴机制实现的。
它只是一个语法糖,以避免例如必须写
java.util.List<java.math.BigInteger> myList =
new java.util.ArrayList<java.math.BigInteger>();
这里有一个小测试来证明这一点:
aioobe@e6510:~/tmp$ cat Test.java
import java.util.*;
public class Test {
public static void main(String[] args) {
List<Integer> myInts = new ArrayList<Integer>();
}
}
aioobe@e6510:~/tmp$ javac Test.java
aioobe@e6510:~/tmp$ md5sum Test.class
523036e294b17377b4078ea1cb8e7940 Test.class
(修改Test.java
)
aioobe@e6510:~/tmp$ cat Test.java
public class Test {
public static void main(String[] args) {
java.util.List<Integer> myInts = new java.util.ArrayList<Integer>();
}
}
aioobe@e6510:~/tmp$ javac Test.java
aioobe@e6510:~/tmp$ md5sum Test.class
523036e294b17377b4078ea1cb8e7940 Test.class
Java 中导入背后的逻辑是否与 C 中的包含逻辑相同?
否,是预处理器指令,使用剪切和粘贴机制实现。#include
...它会影响我的代码的性能吗?
丝毫没有。实际上,编译的类(无论是否使用导入)将是相同的。导入只是语法糖,允许您在源代码中为外部类或(使用静态导入)类成员使用较短的名称。换句话说,它允许您编写:
Map map = new HashMap();
而不是
java.util.Map map = new java.util.HashMap();
仅此而已。
编译时间可能存在很小(很小)的差异。但是,AFAIK,类似的东西不会导致编译器加载所有类。相反,它只是将类的名称添加到符号表中。import java.util.*;
java.util
话虽如此:
.*
Java 中导入背后的逻辑是否与 C 中的包含逻辑相同?
不,它不是。
C/C++包括将任意1 C/C++“代码”注入源流的指令。这可以包括声明和可执行语句...这可能会影响性能,执行内存占用和可执行文件的大小。
1 - 也就是说,包含文件的作者选择放入文件中的任何内容。它可以是简单的方法和类“签名”,但它也可以是宏,代码和其他有影响力的声明。您必须检查文件才能确定。