AI-приложения в C ++: Насколько дороги виртуальные функции? Каковы возможные оптимизации?
В приложении AI я пишу на C ++,
не так много численных расчетовЕсть много структур, для которых требуется полиморфизм во время выполненияочень часто несколько полиморфных структур взаимодействуют во время вычисленийВ такой ситуации есть какие-то методы оптимизации? Пока я выигралЧтобы оптимизировать приложение только сейчас, одним из аспектов выбора C ++ вместо Java для проекта было предоставление большего рычага для оптимизации и возможность использования не объектно-ориентированных методов (шаблоны, процедуры, перегрузка).
В частности, каковы методы оптимизации, связанные с виртуальными функциями? Виртуальные функции реализуются через виртуальные таблицы в памяти. Есть ли какой-нибудь способ предварительно извлечь эти виртуальные таблицы в кэш L2 (стоимость выборки из памяти / кэш L2 увеличивается)?
Помимо этого, есть ли хорошие ссылки на методы локальности данных в C ++? Эти методы позволят сократить время ожидания выборки данных в кэш L2, необходимое для вычислений.
ОбновитьТакже смотрите следующие связанные форумы:Штраф за производительность за интерфейс,Несколько уровней базовых классов