Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.02;
Скачать: CL | DM;

Вниз

Отличие 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.034 c
1-1147812521
ychenick
2006-05-17 00:48
2006.07.02
Папки как файлы ( отображение как zip архив)


2-1150120145
VitV
2006-06-12 17:49
2006.07.02
Delphi+interbase


6-1140525744
AlexEgorov
2006-02-21 15:42
2006.07.02
Почему не получается получить адрес хоста для TCP/IP порта


2-1149571360
Алексий
2006-06-06 09:22
2006.07.02
экран + мышка


4-1143621713
Svetlika
2006-03-29 12:41
2006.07.02
Как показать окно первого экземпляра из второго?