c ++ производительность виртуальных функций

У меня два класса foo а также bar где один является суперклассом другого, и у них обоих есть метод hello_world,

class foo {
virtual void hello_world();
};
class bar : public foo {
void hello_world();
};

У меня вопрос: есть ли разница в производительности, если я сделаю это виртуальным
за bar«s hello_world? Это станет этим:

class foo {
virtual void hello_world();
};
class bar : public foo {
virtual void hello_world();
};

Я буду в основном звонить hello_world от bar,
Я знаю, что виртуальная функция замедлит работу
потому что мы бегаем, ищем время. Но для этого случая есть ли разница?

-1

Решение

Вызов виртуальной функции в контексте, где класс может действительно быть полиморфным, всегда оказывает некоторое влияние на производительность по сравнению с функцией с той же логикой, которая может быть встроенной. Основными причинами являются небольшие издержки на вызов функции, небольшие накладные расходы на поиск нужной функции и значительная потеря возможностей оптимизации. Последний пункт, как правило, самый дорогой.

Исходный пример не компилировался, то есть довольно ясно, что анализ производительности еще не проводился. Беспокоитесь о влиянии на производительность, когда вы измерили, что ваш код работает слишком медленно и что конкретный вызов действительно находится в той области, где возникает проблема производительности.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector