2014-02-25 24 views
0

我只是在考虑如果您自己创建了类,它是否会给您带来好处。通过使自己的坐标类而不是使用Point2D来提高性能

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还是那样在性能上有所等于更多的表现?

我知道这是一个天真的问题,但我在搜索互联网时没有发现任何东西。

+0

即使有性能增益,它在今天的计算中也非常微妙。 – FazoM

+2

为自定义类/使用Point2D制定基准并查看是否有任何区别。 – djhworld

+0

当你写一个测试程序告诉你每个程序的性能时,发生了什么?你怎么使用每个? –

回答

1

有没有必要创建自己的Coordinate类,因为已经存在java.awt.Pointint x;int y;。该类还实现java.awt.geom.Point2D,因此可以轻松使用现有代码,该代码需要Point2D

这是否会提高性能:由于您没有告诉我们您打算如何使用它,因此无法分辨。如果您打算使用Java2D的特性(例如变换,构建ShapePath2D),那么由于频率在intdouble之间频繁转换,它不可能提高性能,甚至可能会降低性能。

如果您只打算将其与自己的代码一起使用,并且只打算执行整数算术运算,并且在具有许多迭代的紧密循环中,那么您现在可能会看到一些性能提升整数算术比任何我听说过的CPU上的浮点算法都快。没有什么动态的HotSpot编译可以改变这种差异,所以这是一个相当确定的选择,你会发现至少有一些改进。

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

+0

我使用OpenGL创建一个简单的游戏,并且我不会在任何地方使用Java2D,但是这会回答我的问题和+1以提供详细的答案。 – hbsrud

相关问题