Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Продуктивність об' єктних програм

Прототипних програмування

Прототипних програмування, зберігши частину рис ТОП, відмовилося від базових зрозуміти - класу і наслідування.

Замість механізму опису класів і породження екземплярів мова надає механізм створення об' єкта (шляхом завдання набору полів і методів, які об' єкт повинний мати) і механізм клонування об' єктів.

Кожен новостворений об' єкт є "екземпляром без класу". Кожен об' єкт може статипрототипом - бути використаний для створення нового об' єкту за допомогою операціїклонування. Після клонування новий об' єкт може бути змінений, зокрема, доповнено новими полями і методами.

Клонований об' єкт або стає повною копією прототипу, що зберігає всі значення його полів і дублюючої його методи, або зберігає посилання на прототип, не включаючи в собі клонованих полів і методів до тихий пір, поки сморід не будуть змінені. У останньому випадку Середа виконання забезпечує механізм делегування - якщо при зверненні до об' єкта він сам не містить потрібного методу або поля даних, виклик передається прототипу, від нього, при необхідності - далі по ланцюжку.

Граді Буч вказує на наступні заподій, що призводять до зниження продуктивності програм через використання об' єктно - орієнтованих засобів:

Динамічне зв'язування методів.

Забезпечення поліморфного поводження об' єктів призводить до необхідності пов'язувати методи, які викликаються програмою (тобто визначати, який конкретно метод буде викликатися) не на етапі компіляції, а в процесі виконання програми, на що витрачається додатковий години При цьому реально динамічне зв'язування потрібно не більш ніж для 20% викликів, але деякі ООП-мови використовують його постійно.

Значна глибина абстракції.

ООП-розробка часто призводить до створення "багатошарових" додатків, де виконання об' єктом необхідної дії зводиться до безлічі звернень до об' єктів більш низького рівня. У такому додатку відбувається дуже багато викликів методів і повернень з методів, що, природно, позначається на продуктивності.

Спадкування "розмиває" код.

Код, що відноситься до "крайовим" класам ієрархії спадкоємства (які зазвичай і використовуються програмою безпосередньо) - знаходиться не тільки в самих цих класах, але і в їх класах- предків. Відносяться до одного класу методи фактично описуються в різних класах. Це призводить до двох неприємних моментів:

· Знижується швидкість трансляції, так як компонувальнику доводитися довантажувати опису всіх класів ієрархії.

· Знижується продуктивність програми в системі із сторінкової пам'яттю - оскільки методи одного класу фізично знаходяться в різних місцях коду, далеко один від одного, при роботі фрагментів програми, активно звертаються до успадкованим методам, система змушена проводити часті перемикання сторінок.

Інкапсуляція знижує швидкість доступу до даних.

Заборона на прямий доступ до полів класу ззовні призводить до необхідності створення та використання методів доступу. І написання, і компіляція, і виконання методів доступу пов'язане з додатковими витратами.

Динамічне створення і знищення об' єктів.

Динамічно створювані об' єкти, як правило, розміщуються в купі, що менш ефективно, ніж розміщення їх на стечу і, тим більше, статичне виділення пам' яті під них на етапі компіляції.

Незважаючи на зазначені недоліки, Буч стверджує, що вигоди від використання ТОП більш вагомі. Крім того, підвищення продуктивності за рахунок кращої організації ТОП-коду, за його словами, в деяких випадках компенсує додаткові накладні витрати на організацію функціонування програми. Можна також зауважити, що багато ефекти зниження продуктивності можуть згладжуватися або навіть повністю усуватися за рахунок якісної оптимізації коду компілятором. Наприклад, згадане вище зниження швидкості доступу до полів класу через використання методів доступу усувається, якщо компілятор замість виклику методу доступу використовує інлайн - підстановку (сучасні компілятори роблять це цілком упевнено).

 

<== предыдущая лекция | следующая лекция ==>
Компонентне програмування | Різні визначення
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 257; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.