2011-10-24 27 views
2

double xとyの代わりにPoint2Dを使用すると、効率に大きな違いはありますか?Java効率 - ポイント対座標

私は、画面の周りを動く多くの円を持つプログラムに取り組んでいます。彼らはそれぞれ1つのポイントから始まり、目的地に近づきます(最終的には停止します)。

.getCurrentLocation().GetY()currentLocationPoint2D)などの方法を使用すると、多数のエンティティでパフォーマンスが低下しています。

帰りたくないので、私のコードを一切修正したくないので、Pointsの代わりにXとYを保存するだけでパフォーマンスが大幅に向上するのではないかと尋ねています。double

+2

プロファイラを実行しているときに、実際の時間はどのくらいですか?ここには数多くの可能性があります... –

+0

改善が見られますが、それは問題ではないと思います。 –

答えて

3

これは、常に新しいポイントを作成するかどうかによって異なります。そうでない場合、つまり既存のものを再利用する場合は、大きなパフォーマンスの違いはありません。

ほとんどの場合、オブジェクトにはコストがかかりますが、ストレージではなくオブジェクトが作成されます。

しかし、aixが示唆するように、実際のパフォーマンスのボトルネックを見つけるためにプロファイラを使用してみてください。

+0

新しいポイントを作成するのではなく、既存のポイントを修正することについて大きなポイント。 – Peter

7

まず、プロファイラーを使用して、パフォーマンスの低下の原因を突き止める必要があります。私はYourKitを使っていますが、他にもあります。

Point2Dは確かに問題ある場合は、2つのdoubleのアレイ、すべてのx座標の1、すべてのy座標の一つとして、あなたのポイントを表すことができます。これは、Point2Dオブジェクトのコレクションを保持するよりもはるかに高速になる可能性があります。

関連する問題