Форум: "Начинающим";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];
ВнизОтличие Packed Record от просто Record. Найти похожие ветки
← →
AlexanderMS © (2006-06-12 19:22) [0]В чём заключается отличие типа Packed Record от простого Record"а? Зачем нужен Packed?
← →
tButton © (2006-06-12 19:24) [1]
> Packed?
насколько я помню статью из хелпа
операции с packed record осуществляются быстрее
и эти самые пакеты можно присваивать друг другу, просто рекорды нельзя
а вообще - F1 тебе поможет =)
← →
AlexanderMS © (2006-06-12 19:27) [2]Спасибо.
← →
begin...end © (2006-06-12 19:38) [3]> tButton © (12.06.06 19:24) [1]
Последняя строка Вашего сообщения абсолютно верна. Чего нельзя сказать об остальных.
← →
Rial © (2006-06-12 19:38) [4]
> tButton © (12.06.06 19:24) [1]
На самом деле все с точностью до наоборот.
Присваивать можно друг другу любые рекорды.
Как, возвомно, вы слышали, сушествует такое понятие, как
выварнивание записи по длине.
Record Field Alignment.
У меня 8, возможно - это не по умолчанию.
1.
Использование Packed уменьшает размер записи.
BigRec=record
I,J:Integer;
B:Byte;
E:Extended;
C:Byte;
L:Cardinal;
end;
SmallRec=packed record
I,J:Integer;
B:Byte;
E:Extended;
C:Byte;
L:Cardinal;
end;
SizeOf(SmallRec)=24, как и должно быть, а
SizeOf(BigRec)=32.
Т.е. каждое следующая переменная выравнивается
по 8 байтной границе.
2. При работе с Packed производительность падает.
3. Для наилучшего быстродействия необходимо обойтичь без Packed,
причем переменные должны быть перечислены, начиная с наибольших, т.е.
Double,Sizngle,Byte.
Ну, Вы поняли.
Отдельная история с Extended.
Т.к. он 10 байтный, то использовать их оптимально попарно.
Если переменная находится по разные стороны границы,
что обеспечивает, например, Packed, то при обращении к ней мы получаем двойную задержку.
← →
Piter © (2006-06-12 19:44) [5]Иными словами, Packed структура занимает меньше места в памяти, но работа с ней происходит медленнее.
Отдельно - это передача структур между модулями (DLL и прочее), когда происходит "передача" структуры между кодами, сгенерированными вообще разными компиляторами. Тогда обычно используют Packed по умолчанию.
← →
Dmitrij_K (2006-06-12 19:44) [6]Из книги Бакнелл.Фундаментальные алгоритмы Delphi
стр. 32 (257КБ) http://img506.imageshack.us/img506/6476/alg032resize4gm.jpg
стр. 33 (208КБ) http://img506.imageshack.us/img506/9630/alg033resize3yw.jpg
← →
AlexanderMS © (2006-06-12 19:57) [7]Спасибо. А то я сам засомневался: вроде бы раньше с успехом присваивал без packed.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c