Главная страница
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.029 c
3-1146655202
comtat
2006-05-03 15:20
2006.07.02
TMySQLClient, Как пользоваться ???


2-1150186786
Тимофей Юрьевич
2006-06-13 12:19
2006.07.02
движение формы


2-1149706046
Dr. Andrew
2006-06-07 22:47
2006.07.02
Скрол. ListBox1, чтоб показ. записи из Списка(1000000) порциями?


3-1146821916
Lida
2006-05-05 13:38
2006.07.02
Как создать SQL запрос?


5-1134762564
Jenya
2005-12-16 22:49
2006.07.02
Изменить цвет строки в компоненте TlistView???