Я занимаюсь портированием, улучшением и преобразованием нашего reign 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?