производительность — хорошо иметь большой абстрактный класс в с ++ или нет?

Я хочу знать, хорошо ли создавать абстрактный класс с несколькими чисто виртуальными методами в c ++?

Например, в некоторых ситуациях, таких как реализация диалогов протокола инициации сеанса, мы обнаружили, что он может быть реализован с использованием шаблона моста. Но наличие абстрактного базового класса для общих операций приводит к очень большому абстрактному классу. Теперь, с точки зрения производительности, каков эффект от использования и реализации такого класса?

Представьте, что у нас есть разные диалоги, каждый из которых имеет свою реализацию.
(например: InviteDialog, RegisterDialog, InfoDialog, …)

Применение схемы моста:

class IIDialog{
public:
/*there are multiple pure virtual methodes at least 15*/
virtual int32_t SendResponse(ISipMessage* response) = 0;
protected:
/*there are multiple methods that use pure virtual methods*/
int32_t Send_Response(){retun SendResponse(response);}
}

class IInviteDialog : public IIDialog
{
/*Implemet virtual methods*/
}

class IRegisterationDialog : public IIDialog
{
/*implement virtual methode*/
}

другие части реализации игнорируются (реальные реализации и рефераты для реализации, которые используются вышеперечисленными классами)

Спасибо

0

Решение

С большинством современных компиляторов C ++ можно предположить, что накладные расходы производительности при создании объекта не зависят от количества виртуальных методов.

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

И если эти вызовы функций делают «сложные» вещи, такие как сетевые операции, тогда вам не нужно беспокоиться о таких микрооптимизациях, это будет совершенно неактуально.

1

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

С точки зрения производительности, количество виртуальных методов не имеет значения в C ++ (существует небольшая постоянная цена за косвенное обращение, независимо от количества методов).

0

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