2016-08-24 11 views
0

私は単純なVector2クラス/構造体がfloat xとyとカップルメソッドを必要とします。 私はまだ相違を回避するつもりですが、まだそれを得ることはできません これは通常、構造体で行われることはわかっていますが、Vector2の大きな2D配列をフレームごとに更新したいので、クラスを改善するでしょう構造体よりも? 途中で最初に投稿し、すべての返信を前もってありがとう!Vector2:クラスまたは構造体?

+0

私は**構造** – MrClan

+1

私は理解していないあなたの質問のUnity3Dタグを与えることです。エンジンには既にVector2/3/4構造体がありますので、自分で作成する必要はありません。 – Everts

+0

私は、定数更新が構造体よりもクラスを良くして、新しいVector2クラスを作るべきだと思った。 – Hadi

答えて

6

は、この操作のための構造体

よりもクラスより良くするんでしょう、どちらも特にどの良くも悪くもだろう。しかし、長命のオブジェクトが多いと、GCの不具合が発生する可能性があります。 「大規模な2D配列」ということは、構造体を使用することによって、かなりの量のオーバーヘッド(オブジェクトヘッダー)を潜在的に節約できることを意味します。

+0

親愛なる! **あなたは構造体を使ってかなりの量のオーバーヘッド(オブジェクトヘッダー)を潜在的に保存することもできます**これは私が消化するにはあまりにも多くの情報です。もう少し説明できますか? –

+0

あまりにも消化するのは大変ですが、グーグルではちょっとしたアイディアがあります。 もし私がそれを正しく理解していれば、プリミティブ型を収集するよりも高価な構造体をガベージコレクションすることになりますか?それは、フロートの2つの配列をGCで簡単にするでしょうか?オーバーヘッドの量も倍増しないでしょうか?どちらが好きですか?また、彼らは不変でない限り、構造体を使わないと言っています。 "mutability"とみなされるすべてのフレームを更新していませんか?返信ありがとう – Hadi

+1

@UmairM 'class'のすべてのインスタンスは**オブジェクト**です。オブジェクトには、*オブジェクトヘッダー*と実際のデータで構成されるヒープ上の領域が割り当てられます。値型は*他のものの一部として*割り当てられ、オブジェクトヘッダーはありません。型はそれを所有するものを介して暗示されます。配列の場合、型は配列*の型によって暗黙に*されます。数千から数百万の小さなデータがあると、この違いが加わり始めます。 –

関連する問題