На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
Модераторы: JoeUser, Qraizer, Hsilgos
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Примеси (mixin) в С++
    Цитата JoeUser @
    А в чем оверхед и как его оценить в %?

    Повторю уже написанное в теме, но с дополнениями.
    Примесь это статическое, на этапе компиляции. Если нет чего-то экзатичного и явно обременительного (вроде динамического приведения к дочернему классу и вызова виртуальной функции объекта из примеси), то дополнительных расходов почти нет.
    Декоратор, в своём самом простом виде, проксирует вызов всех методов. То есть расходы на вызов метода (именно вызов с передачей параметров и возвратом значения), увеличиваются в два раза.
    Но декоратор, обычно нужен именно для расширения интерфейса.
    Если статическое расширение, на шаблонах, то тут вообще компилятор может заоптимизировать, до полной потери накладных расходов.
    Только чаще всего, декоратор нужен для расширения динамического интерфейса. А в этом случае, сам объект, использует виртуальные методы, да ещё и декоратор тоже использует виртуальные методы.
    Ну а вызов виртуального метода, дороже вызова невиртуального.
    Таким образом, в классическом случае, декоратор дороже примеси. Но тут зависит от кода, может быть обратное.
    Человек должен делать то, что может сделать только он, всё остальное должна делать машина!
      Все верно.
      Мои программные ништякиhttp://majestio.info
      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script Execution time: 0,0672 ]   [ 15 queries used ]   [ Generated: 24.06.18, 16:57 GMT ]