2011-12-31 11 views
7

私はreign SDKをC#からDに移植、拡張、およびD処理しています。現在、Vector2数学モジュールを扱っています。Dパフォーマンス:union vs @property

以下の2つの構造体の間にパフォーマンスの違いはありますか?私のベンチマークは、同一の性能を示すが、私は専門家の洞察力のビットを獲得したいと思います:)

struct Vector2(T) 
{ 
    T x, y; 
    @property T u() { return x; } 
    @property T v() { return y; } 
    @property void u(T value) { x = value; } 
    @property void v(T value) { y = value; } 
} 

struct Vector2(T) 
{ 
    union { T x, u; } 
    union { T y, v; } 
} 

もちろん、私は、構文簡単にするために労働組合を利用したいと思います。しかし、それらを使用すると予想外の落とし穴がありますか?私は彼らの低レベルの詳細に精通していません。

私は、HLSL/GLSLに似たベクトルプロパティシンタックスを追加しています(vec1.yxz + = vec2.xyzなど)。 @propertyではなく、unionでそれを行う方法はありますか?

+0

'vec1.yxz + = vec2.xyz'にはopDispatchが必要ですが、誰かがこれをすでに行っていると思います。 – kennytm

+2

@KennyTM - あなたは正しい - https://bitbucket.org/dav1d/gljmとhttps://bitbucket.org/dav1d/gl3n – DejanLekic

答えて

13

使用alias

struct Vector2(T) 
{ 
    T x, y; 
    alias x u; 
    alias y v; 
} 
+0

Doh! ...私はそれを知っていたはずです。ありがとう! –

関連する問題