我有以下三种方法:
public static void test1(Point point)
{
Handler.doSomething(point.x / 2.0f, point.y / 1.75f);
}
public static void test2(Point point)
{
Handler.doSomething(point.x / 2.0f, point.y / 0.55f);
}
public static void test3(Point point)
{
Handler.doSomething(point.x / 2.0f, point.y / 1.25f);
}
每次调用其中一种方法时,都会执行除法。 Java中是否有某种类型的池可以避免重复最近的算术运算? 因为如果没有,那么也许最好第一次保存结果,这样我就可以避免多次进行这种除法? 例如,我知道 Java 有字符串池。
引用 Josh Bloch 的 Effective Java 第 3 版,第 6 条(“避免创建必要的对象”):
...通过维护自己的对象池来避免创建对象是一个坏主意,除非池中的对象非常重量级...但是,一般来说,维护自己的对象池 使代码变得混乱、增加内存占用并损害性能。现代的 JVM 实现具有高度优化的垃圾收集器,在轻量级对象上轻松超越此类对象池
即使您重复执行算术运算,其成本也非常低。在某些情况下,JVM 优化甚至可以避免创建对象。
因此,在有证据表明您的程序可以从中受益之前,不要尝试使用对象池。