Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.227.114.125] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Повторю уже написанное в теме, но с дополнениями. Примесь это статическое, на этапе компиляции. Если нет чего-то экзатичного и явно обременительного (вроде динамического приведения к дочернему классу и вызова виртуальной функции объекта из примеси), то дополнительных расходов почти нет. Декоратор, в своём самом простом виде, проксирует вызов всех методов. То есть расходы на вызов метода (именно вызов с передачей параметров и возвратом значения), увеличиваются в два раза. Но декоратор, обычно нужен именно для расширения интерфейса. Если статическое расширение, на шаблонах, то тут вообще компилятор может заоптимизировать, до полной потери накладных расходов. Только чаще всего, декоратор нужен для расширения динамического интерфейса. А в этом случае, сам объект, использует виртуальные методы, да ещё и декоратор тоже использует виртуальные методы. Ну а вызов виртуального метода, дороже вызова невиртуального. Таким образом, в классическом случае, декоратор дороже примеси. Но тут зависит от кода, может быть обратное. |
Сообщ.
#17
,
|
|
|
Все верно.
|