Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.07.17;
Скачать: [xml.tar.bz2];

Вниз

Object types или class?   Найти похожие ветки 

 
panov   (2003-07-04 15:38) [0]

Как сравнить(и можно ли) накладные расходы при использовании object types и class

TMyObject=object
...
...
end;

и

TMyClass=class
...
...
end;

и не исчезнут ли объектные типы в будущем?


 
Юрий Федоров   (2003-07-04 15:40) [1]

Вроде как настоятельно не рекомендуется использовать object


 
vuk   (2003-07-04 15:42) [2]

А какие именно накладные расходыинтересуют?

>и не исчезнут ли объектные типы в будущем?
Легко. В Delphi.net их точно не будет.


 
panov   (2003-07-04 16:00) [3]

>Юрий Федоров © (04.07.03 15:40)

Вроде как настоятельно не рекомендуется использовать object

Это так, но ведь хочется использовать, если есть преимущества-)

>vuk © (04.07.03 15:42)

А какие именно накладные расходыинтересуют?

Интересует сравнение времени инициализации объекта класса и простого объекта и затраты памяти в каждом из случаев.


 
Юрий Федоров   (2003-07-04 16:02) [4]

Думаю, что разница в затратах копеечная.
А какие у них есть преимущества?
Мне просто по долгу службы приходится иногда копаться в старых программах, где они используются, и в эти моменты мне хочется очень громко ругаться матом


 
panov   (2003-07-04 16:07) [5]

Про преимущества.
Есть подозрение, что для классового типа вызывается конструктор всегда(это затрата времени), а для объектного типа - нет(например).


 
vuk   (2003-07-04 16:13) [6]

Ну, вообще говоря, эта тем поднималась не раз. Разница в объеме выделяемой памяти отсутствует. Разница в скорости инициализации есть - примерно на время вызова FillChar для полей.


 
reonid   (2003-07-04 16:15) [7]

object:

отсутствует RTTI - сооответсвтенно никаких is, as

может быть стековым

конструктор не выделяет память и не инициализирует её нулями.
(Но это должен сделать программист - либо выделить
динамически с помощью New, либо разместив object в стеке,
также программист должен инициализовать все поля сам)

может быть упакованным, как record

бинарно совместим с record при отсутствии виртуальных ф-й.
(VMT располагается в конце тела класса, в котором впервые
введены виртуальные ф-и).




 
Юрий Федоров   (2003-07-04 16:20) [8]

>>reonid © (04.07.03 16:15)
>>может быть стековым
Именно из-за этой самой его особенности я несколько раз потратил достаточно много времени чтобы понять, почему собственно программа вылетает. Причем вылетает так, что вообще ничего не понять. А оказалось, что из-за стековых объектов этот самый стек и переполнился...
А вообще, это можно рассматривать как преимущество ?


 
panov   (2003-07-04 16:22) [9]

Видимо, для объектных типов выигрыш в скорости все-таки есть, и для критичных по скорости приложений при создании множества объектов в короткие промежутки времени их можно использовать...


 
vuk   (2003-07-04 16:25) [10]

При создании множества объектов разницы будет очень мало, т.к. основное время тратится не на FillChar, а на работу менеджера памяти.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.07.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
1-55593
Urvin
2003-07-02 17:26
2003.07.17
Покраска Кнопок


4-55884
Executor
2003-05-12 14:14
2003.07.17
Проблема с перерисовкой окна в WinXP


6-55681
Adventure
2003-05-12 10:59
2003.07.17
Загрузка файла на веб сервер.....


3-55398
Andrey007
2003-06-23 13:32
2003.07.17
Как редактировать текст в DBMemo?


7-55868
alexus
2003-05-07 19:03
2003.07.17
Как программно ребутнуть компьютер





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский