在另一个对象而不是自己的对象上调用方法是否有性能损失?

Is there a performance penalty for calling method on another object instead of own?

假设我有一些时间关键代码,它是某个 class 的 运行 很多次。但是,此代码需要处理封装在另一个 class 中的数据,因此我的两个选择是获取对数据的引用并在我的原始 class 中执行计算,或者将计算委托给 class 存储它和 return 结果。我的问题是,与仅获取数据引用并在同一 class 中使用方法相比,在另一个 class 上调用方法并获得结果是否会带来性能损失?如果是这样,这是否具有实际意义,还是只是 1-2 毫秒?

My question is, does calling a method on another class and getting a result come with a performance penalty compared to just getting a reference of data and using a method within the same class ?

它不会出现在 "long run"。

如果这段代码很关键,则意味着 JIT 将急切地寻找在运行时优化它的方法,而它首先要执行的优化之一就是内联。

当然,如果给定的代码段不是 60+k 字节码长的怪物...

FWIW、HotSpot(Oracle 的实现)将在 soon/late 时启动并优化同一段代码的 10 000 次执行。其他 JVM 实现可能迟早会引入 JIT。

我认为你甚至不应该考虑这个。这完全取决于 JVM 和 jit 编译优化。而且他们越来越好。

我相信短方法甚至可以被编译和执行内联(即JVM甚至可能不会生成调用指令)

更好地专注于在关键功能中编写最佳代码。