2011-12-31 34 views
7

我正在將我們的reign SDK從C#移植到D,並將D-Atizing從C#轉換爲D.目前正在使用Vector2數學模塊。D性能:union vs @property

下面兩個結構之間是否會有性能差異?我的基準測試顯示相同的性能,但我想獲得一個位專家的見解的:)

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在那裏?

+0

您需要'vec1.yxz + = vec2.xyz'的opDispatch,我相信有人已經這樣做了。 – kennytm 2011-12-31 09:49:39

+2

@KennyTM - 你是對的 - https://bitbucket.org/dav1d/gljm和https://bitbucket.org/dav1d/gl3n – DejanLekic 2011-12-31 12:15:11

回答

13

使用alias

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

Doh!我應該知道這一點。謝謝! – 2011-12-31 09:38:23