переход от void * и приведение к ABC с PVF (будет ли удар по скорости?) - PullRequest
0 голосов
/ 21 июня 2011

Я только что унаследовал (гм) проект реального времени QNX, который использует механизм операторов void * / downcasting / case для обработки сообщений.Я бы предпочел вместо этого переключиться на абстрактный базовый класс с чисто виртуальными функциями, но мне интересно, было ли оригинальное решение сделано таким образом по соображениям скорости?похоже, он был изначально написан на C и перенесен в какой-то момент на C ++, поэтому я предполагаю, что это может быть причиной этого.

Любые мысли по этому поводу приветствуются.Я не хочу делать код красивым, безопасным и аккуратным, а затем приводить к сбою по соображениям производительности во время тестирования.

1 Ответ

1 голос
/ 21 июня 2011

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

Если чистый виртуальный интерфейс имеет смысл с точки зрения дизайна, я бы определенно пошел по этому пути (прототип и профилируйте его, если вы действительно заинтересованы).

...