Виртуальные функции вызываются через vtable, который представляет собой в основном массив указателей функций. Таким образом, каждый раз, когда он вызывается, есть дополнительный массив поиска. Я не уверен, буду ли я называть это huuuuge ноно, хотя, в общем, они должны быть довольно быстрыми.
От Википедии:
Виртуальный вызов требует, по меньшей мере, дополнительное индексированного разыменования и иногда «FixUp» Кроме того, по сравнению с не-виртуальным вызовом, который просто прыжок скомпилированный указатель. Поэтому вызов виртуальных функций по своей сути медленнее, чем вызов не виртуальных функций. Эксперимент , сделанный в 1996 году, показывает, что примерно 6-13% от времени выполнения расходуется просто на правильную функцию , хотя накладные расходы могут достигать 50%. [4] Стоимость виртуальных функций может быть не столь высокой на современных архитектурах процессора из-за большого количества кэшей и лучшего прогноза ветвления.
Кто вам сказал? –
У вас действительно проблема с производительностью? –