Java中是否有某种池可以避免重复最近的算术运算?

问题描述 投票:0回答:1

我有以下三种方法:

 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 有字符串池。

java static floating-point pool
1个回答
0
投票

引用 Josh Bloch 的 Effective Java 第 3 版,第 6 条(“避免创建必要的对象”):

...通过维护自己的对象池来避免创建对象是一个坏主意,除非池中的对象非常重量级...但是,一般来说,维护自己的对象池 使代码变得混乱、增加内存占用并损害性能。现代的 JVM 实现具有高度优化的垃圾收集器,在轻量级对象上轻松超越此类对象池

即使您重复执行算术运算,其成本也非常低。在某些情况下,JVM 优化甚至可以避免创建对象。

因此,在有证据表明您的程序可以从中受益之前,不要尝试使用对象池。

© www.soinside.com 2019 - 2024. All rights reserved.