![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Чем отличаются фундаментальные типы данных от общих? [D7, XP]
avp © (2007-07-16 17:31:00)Чем отличаются фундаментальные типы данных от общих?
В справке Delphi написано, что формат и диапазон фундаментальных типов не зависит от ЦП и ОС, то есть это платформонезависимый тип, в отличие от общего. При использовании фундаментальных типов Delphi создает более оптимальный код.
Разъясните это, пожалуйста, желательно с примерами (вплоть до самых тонкостей).
Почему появилось такое деление и каким образом Delphi создает более оптимальный код при использовании общих типов данных?
Anatoly Podgoretsky (2007-07-19 16:20:00) [1]А если откомпилируешь на Д1 то будет 32 бита.
64-битной платформы пока у Борланда нет, будет и будет тебе 64 битный Интерег и возможно даже 64 битный Кардинал.
Плохиш (2007-07-19 16:03:00) [2]
> avp © (19.07.07 16:02) [13]
Ды думаешь, АП буковки жирным выделял просто так?
avp (2007-07-19 16:02:00) [3]А если я скомпилирую программу, с использованием типа Integer на 64-битной платформе, то он будет занимать там 64 бита?
Anatoly Podgoretsky (2007-07-17 15:00:00) [4]> Ega23 (17.07.2007 11:37:07) [7]
Был, и с тех пор побывал и Integer и dWord, пока не стал временно Longword
Когда он был Integer Борланд его гордо называл 31 бит беззнаковый
Anatoly Podgoretsky (2007-07-17 14:59:00) [5]> Desdechado (17.07.2007 11:00:06) [6]
К Cardinal это не отношится, он же Generic и на своем веку чем только не побывал.
An integer type represents a subset of the whole numbers. The generic integer types are Integer and Cardinal; use these whenever possible, since they result in the best performance for the underlying CPU and operating system. The table below gives their ranges and storage formats for the current 32-bit Delphi compiler.
Generic integer types for 32-bit implementations of Delphi
Type Range Format
Integer -2147483648..2147483647 signed 32-bit
Cardinal 0..4294967295 unsigned 32-bit
Desdechado (2007-07-17 11:51:00) [6]Это вы уже про другой тезис "горячки" говорите in all implementations of the Delphi language
jack128_ (2007-07-17 11:44:00) [7]
> Где гарантия, что он не станет 8 байт через 3 года?
Ну если мы дождемся 64битного компилера, то он 100% станет 8ми байтовым. Просто по опредлению.
Ega23 (2007-07-17 11:44:00) [8]Об том и реч.
А там, глядишь, и до 16 доживём. Может быть.
Ega23 (2007-07-17 11:37:00) [9]
> Нифига подобного. Cardinal он хоть на XP, хоть на 98, хоть
> на p133, хоть на Core2duo остается одним и тем же, даже
> на x64 AFAIK
>
Да, вот только раньше он был 2 байта, нет?
Integer - тот точно был.
Где гарантия, что он не станет 8 байт через 3 года?
Desdechado (2007-07-17 11:00:00) [10]> Погорячились ребята...
Нифига подобного. Cardinal он хоть на XP, хоть на 98, хоть на p133, хоть на Core2duo остается одним и тем же, даже на x64 AFAIK
Dib@zol (2007-07-16 21:55:00) [11]
> regardless of the underlying CPU and operating system
Погорячились ребята...
avp (2007-07-16 21:40:00) [12]The range and format of a fundamental type is the same in all implementations of the Delphi language, regardless of the underlying CPU and operating system. The range and format of a generic type is platform-specific and could vary across different implementations. Most predefined types are fundamental, but a handful of integer, character, string, and pointer types are generic. It's a good idea to use generic types when possible, since they provide optimal performance and portability.
То есть фундаментальные типы не зависят от ЦП и ОС, а выигрыш в скорости можно получить при использовании общих типов.
avp (2007-07-16 21:34:00) [13]Да во второй строке перепутал, наоборот. Смотрите последнюю
MBo (2007-07-16 20:45:00) [14]>При использовании фундаментальных типов Delphi создает более оптимальный код.
нет, выигрыш по скорости в некоторых случаях может быть при использовании не фундаментальных, а Generic типов (Integer, Cardinal), т.к. они родные для процессора.
Dib@zol (2007-07-16 17:34:00) [15]
> диапазон фундаментальных типов не зависит от ЦП
Правда??? А пчм тогда SIZEOF(Integer)<>SIZEOF(Int64)???