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

Вниз

Использование типа object   Найти похожие ветки 

 
goobit   (2003-05-22 18:04) [0]

Собственно интересно ваше мнение по поводу использования в проектах "устаревшего" типа object. Хотя в документации к любой версии Delphi информация по ним практически отсутствует, они обладают рядом существенных приемуществ:
- могут не содержать VMT, что позволяет делать оболочки для обычных record"ов (например для TRect)
- Если нет VMT, то объект можно создать как переменную в стеке и не заботиться о конструкторе и деструкторе, что может существенно повысить скорость.

Собственно почему ребята из Borland так активно не советуют его использовать при некоторых явных приемуществах в определенных задачах?


 
DiamondShark   (2003-05-22 19:29) [1]


> - могут не содержать VMT, что позволяет делать оболочки
> для обычных record"ов (например для TRect)

Не понял, "оболочка" -- это как? Рекорд со статическими методами? Чем это лучше рекорда и набора глобальных процедур?


> - Если нет VMT, то объект можно создать как переменную в
> стеке и не заботиться о конструкторе и деструкторе, что
> может существенно повысить скорость.

Повысить по отношению к чему?


> Собственно почему ребята из Borland так активно не советуют
> его использовать при некоторых явных приемуществах в определенных
> задачах?

Собственно, преимуществ (опять же, перед чем?) не наблюдается. Зато наблюдается явная иизбыточность. Так что ребята из Борланд не достаточно активны, могли бы ещё в 1-2 версии это хозяйство выбросить.


 
y-soft   (2003-05-22 20:23) [2]

Насчет выбросить это наверное рановато. Зачем отбирать у языка гибкость. Посмотрите, например, как портирована на Delphi работа с GDI+


 
goobit   (2003-05-23 15:26) [3]

Для меня, например, более удобной является запись Rect1.Intersect(Rect2), а не Rect1 := IntersectRect(Rect1, Rect2). Это касается и простых обработчиков пакетов, когда данные пакета содержатся в объекте и их можно просто прочитать из потока (не заботясь о VMT).

На счет стека: нормальным путем экземпляр в стеке создать нельзя (в отличии от C++), а выделение памяти в стеке ВСЕГДА будет быстрее выделенея памяти в куче. Если создание/удаление происходит довольно часто, то даже десятки микросекуд становятся важными. Конечно, такие объекты не могут поддерживать полиморфизм (так как нельзя создать виртуальных методов), но для простых классов это не обязательно.

На мой взгляд именно выигрыш в читабельности кода не в ущерб быстродействию.



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

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

Наверх





Память: 0.45 MB
Время: 0.011 c
3-26355
DedMoroz
2003-05-18 21:44
2003.06.09
Paradox


1-26503
Somofly
2003-05-30 03:59
2003.06.09
TStringGrid


11-26414
AlbertHakimov
2002-09-17 11:23
2003.06.09
Два насущных вопроса !


14-26695
Den
2003-05-21 14:57
2003.06.09
Components


1-26538
kamkad3e
2003-05-26 22:43
2003.06.09
параметры к WordApplication1.Documents.Open





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