D производительность: союз против @property - PullRequest
7 голосов
/ 31 декабря 2011

Я в процессе портирования, расширения и D-аптизации нашего царственного SDK с C # на D. В настоящее время работаю над математическим модулем Vector2.

Будет лиразница в производительности между двумя структурами ниже?Мои тесты показывают одинаковую производительность, но я хотел бы получить немного экспертного понимания:)

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?

1 Ответ

13 голосов
/ 31 декабря 2011

Использование alias!

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