Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.17;
Скачать: 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 вся ветка

Текущий архив: 2003.07.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
3-55430
Vick
2003-06-24 10:06
2003.07.17
max кол-во колонок в EhDBGrid


1-55575
Nucl
2003-07-02 19:54
2003.07.17
Как принудительно вызвать появление хинта у контрола ?


3-55412
Evgenij Kardash
2003-06-22 19:18
2003.07.17
Запрос по двум таблицам


1-55648
Sheng
2003-07-02 20:32
2003.07.17
Работа с мышкой


14-55730
Centurion
2003-07-02 17:38
2003.07.17
mwEdit