Форум: "Основная";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];
ВнизЧто лучше и быстрее Найти похожие ветки
← →
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 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.007 c