Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.016 c
7-55882
iZEN
2003-05-06 16:26
2003.07.17
Самостарт сервиса.


14-55807
Кен
2003-06-19 04:48
2003.07.17
Установил Дельфи 7 трайальную версию. Она меня поблагодарила за


3-55461
Belocarsk
2003-06-25 12:27
2003.07.17
Маркер сортировки в столбце DBGrida как Outlooke


6-55707
LOX
2003-05-10 14:18
2003.07.17
Код который разрывает связь с инетом.


14-55799
Mifs
2003-06-30 18:14
2003.07.17
Адресация жесткого диска. (CHS)




   Наверх