2014-02-25 65 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

相關問題