2011-12-31 3 views
7

나는 reign SDK을 C#에서 D로 이식, 향상, D-atizing하는 중입니다. 현재 Vector2 수학 모듈을 다루고 있습니다.D 퍼포먼스 : 유니온 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 대신 unions로 할 수있는 가능한 방법이 있습니까?

+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! ... 나는 그것을 알아야했다. 감사! –