【发布时间】:2013-08-15 06:20:27
【问题描述】:
我了解到,与 C/C++ 不同,当我们“导入”包时,它们实际上并没有被添加(它们被引用而不是被嵌入)到类文件中。
这会对性能产生什么影响?
我很好奇由于引用的数据(来自包)在 .class 本身中不可用而可能产生的开销(调用引用的包...等)。
或者开销极小?
【问题讨论】:
-
你提到的线程得出结论,导入在 C/C++ 中的工作方式与 Java 不同。这个我已经知道了
-
在反编译字节码时,无法确定导入的内容。他们留下的唯一痕迹是行号略高,因此也不会影响性能。
-
许多来自 C/C++ 的开发人员起初对 Java 感到不安的是,性能不是你 a) 需要担心的事情 b) 是你应该只在运行程序之前测量的东西一个决定,c) 如果事实证明存在问题(这种情况很少见但令人沮丧),Java 被设计为更易于理解为一种语言(尽管 JVM 非常复杂),并且可以消除许多问题在低级语言中您会担心的常见问题。
-
@PeterLawrey 这可能会导致所有那些众所周知的 O(2^n) 算法的性能显着下降,其中 n 是当前堆栈跟踪的行号。
-
@JasonC 没错,像 Big-O 这样的“大局”优化总是很重要,Java 开发人员应该比恕我直言更好地理解。非常低的微调,比如哪些变量在哪些寄存器中,这对 Java 开发人员来说并不重要。
标签: java