通过创建自己的Coordinate类而不是使用Point2D来提高性能

时间:2014-02-25 13:35:53

标签: java performance benchmarking

如果你自己创作一个类,我只是想着它是否会给你表现。

public class Coordinate{
    private int x;
    private int y;

    public Coordinate(int x, int y){
        this.x = x;
        this.y = y;
    }

    /* Getters & Setter */

    /* etc. */
}

这会比使用Point2D表现更好,还是性能稍差?

我知道这是一个天真的问题,但在搜索互联网时我什么也没找到。

1 个答案:

答案 0 :(得分:1)

您无需创建自己的Coordinate课程,因为已存在包含字段java.awt.Pointint x;的课程int y;。此类还实现了java.awt.geom.Point2D,因此很容易使用需要Point2D的现有代码。

这是否会改善表现:既然你还没有告诉我们你打算用它做什么,那就没办法说出来了。如果您要使用转换等Java2D功能,构建ShapePath2D s,那么它不太可能提高性能,甚至可能会因为频繁转换而降低性能intdouble

如果您只是将它与自己的代码一起使用并且只打算执行整数运算,并且在具有多次迭代的紧密循环中,那么您可能会看到一些性能改进,因为您&# 39;现在重新进行整数运算,这比我曾经听过的任何CPU上的浮点运算都要快。没有任何动态HotSpot编译可以改变这种差异,所以你可以肯定的是,你至少会看到一些改进。

但是如果您将Coordinate / Point上的操作与其他计算或I / O混合,那么这些其他操作的性能特征不会改变,因此整数算术的性能增益将小于你的整体表现。