Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.013 c
14-97798
ZeroDivide
2003-06-11 11:26
2003.06.30
даунгрейд вашего компьютера


1-97587
Muskat
2003-06-11 14:40
2003.06.30
PChar2


1-97722
SeNtiMeL
2003-06-18 14:42
2003.06.30
Как проверить активна ли форма ?


1-97666
Noy
2003-06-17 13:26
2003.06.30
Запуск приложения


1-97675
RoadStar
2003-06-17 13:39
2003.06.30
TStringGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский