Справедливое замечание - получаемые пакеты нужно сохранять в буфер и объединять по мере готовности. Правку внес. Устройство буферов может отличаться в зависимости от установленного уровня смешивания, как указано далее. Если же вы говорите о том, какое сообщение считается большим - это зависит от вашей конфигурации.
Так, ладно, в баню производительность. std::variant будет очевидно шустрее виртуальных методов, но я боюсь наврать лишний раз. Ну, вообще, так как полиморфизм внешний, можно навесить достаточно большое количество дополнительных методов работы с хранимыми данными. Для виртуальных методов мы так не можем. Если использовать указатели на функции и просто передавать в них void*, то проблема будет примерно та же (надеюсь, я вас правильно понял)
Действительно, был не прав, по факту везде vtables используется. Но, возможно я ошибаюсь, мы в любом случае не можем гарантировать константный O(1), вызов vtalbes может занять дополнительные расходы?
В целом интересно, надо будет глянуть
Справедливое замечание - получаемые пакеты нужно сохранять в буфер и объединять по мере готовности. Правку внес. Устройство буферов может отличаться в зависимости от установленного уровня смешивания, как указано далее.
Если же вы говорите о том, какое сообщение считается большим - это зависит от вашей конфигурации.
Так, ладно, в баню производительность. std::variant будет очевидно шустрее виртуальных методов, но я боюсь наврать лишний раз.
Ну, вообще, так как полиморфизм внешний, можно навесить достаточно большое количество дополнительных методов работы с хранимыми данными. Для виртуальных методов мы так не можем. Если использовать указатели на функции и просто передавать в них void*, то проблема будет примерно та же (надеюсь, я вас правильно понял)
Действительно, был не прав, по факту везде vtables используется. Но, возможно я ошибаюсь, мы в любом случае не можем гарантировать константный O(1), вызов vtalbes может занять дополнительные расходы?
спасибо, что-то не подумал об этом. Сейчас поправлю
Секунду. Комментарий поправил