Вниз
Скачать: CL | DM;

Что лучше и быстрее   Найти похожие ветки 

← →
NailMan ©   (2003-06-19 13:45) [0]

Уважаемые Мастера!

Меня интересует сабж при использовании следующих кострукций:

Есть запись:
TD3DXAttributeRange с несколькими DWORD полями

Мне нужен динамический массив с такими структурами, и вот как можно это реализовать:

Attribute : Array of TAttribute;
или
Attribute : ^TD3DXAttributeRange;

Соответсвенно если я хочу выделить память под первый вариант на 10 записей, мне необходимо сделать так: SetLength(Attribute,10);
Для второго варианта: Getmem(Attribute,Sizeof(TD3DXAttributeRange) * 10);

В time critical цикле(рендер фрейма) мне нужно использовать какой-то элемент массива для рендера. Вот пример:

1-й вариант тривиален используем Attribute[i].ля-ля-ля
2-й вариант:

var a:^TD3DXAttributeRange;
a:=Attribute; //так как Attribute находится в объекте и не должен изменяться
if i>0 then inc(a,i); //переходим на i-й элемент
Используем a^.ля-ля-ля

Вот и встает вопрос: какой способ будет быстрее работать и какой юзать грамотней? Запись в массив не ведется, размер не изменяется. Только чтение.


← →
Palladin ©   (2003-06-19 13:53) [1]

во втором варианте
type
TD3DXARAr=array [0..maxint] of TD3DTD3DXAttributeRange;
PD3DXARAr=^TD3DXARAr;
var
Attribute : PD3DXARAr;

Getmem(Attribute,Sizeof(TD3DXAttributeRange) * 10);
Attribute[i];

в общем случае разницы не заметишь...



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.021 c
14-97785
k@rt
2003-06-14 00:34
2003.06.30
Нуден HexEdit


14-97821
Knight
2003-06-11 22:11
2003.06.30
Есть тут те кто ещё помнит Diablo первой версии?


3-97494
Kadastr
2003-06-04 10:33
2003.06.30
Как назначить клавишу Enter для DBCtrlGrid чтобы ShowModal?


3-97500
caponid
2003-06-05 13:01
2003.06.30
Изменение языка ввода?


14-97871
Fly Iron Man
2003-06-12 17:29
2003.06.30
Есть ли в C++ динамические массивы




   Наверх