Qt, вопросы производительности
При вызове виртуального слота потеря производительности примерно в 10 раз, а вот что относительно вызова виртуальной функции внутри слота? Ведь, по идеи, все затраты, при вызове виртуального слота, ложатся на вычисление объекта и адреса вызываемого слота.
При вызове виртуального слота потеря производительности примерно в 10 раз
По сравнению с чем?
ну конечно же, по сравнению с вызовом не виртуального слота, согласно тролям. тут, конечно, не очень подходит слово "вызов", скорее "ответ на сигнал" или "при связывании с сигналом", бо при прямом вызове(без сигнала) слот ведет себя как обычная функция, собственно это и есть обычная функция.
а какая собственно разница, какой класс Qt? меня интересует теоретическая сторона вопроса. ну если уж так нужны детали, то допустим есть некий абстрактный класс обмена сообщениями по сети унаследованный от QObject, который представляет универсальный интерфейс. от этого класса наследуются два дочерних класса-реализации для работы с TCP и UDP протоколами. так вот, интерфейс должен обладать рядом слотов, но часть из них должна перегружаться. есть два пути, пишем виртуальные слоты или же вызываем внутри не виртуальных слотов виртуальные функции. вопрос, как сделать правильней и быстрее?