пользователя, и в зависимости от сообщения с помощью абстрактной фабрики конструирую класс, который будет что-то делать.
Насколько я знаю, обращение к ОС и получение указателя на объект в куче занимает определенное время и если на каждое сообщение создавать объект в куче, то будет достаточно затратно.
Есть ли какой нибудь более эффективный способ ?
можно возвращать std::variant из возможных обработчиков, тогда аллокации не будет. (Только еще подушню, что аллокации обычно без участия ядра ОС проходят)
Ну вообще от кода твоего зависит. Можно в функции получения сообщения выяснять какой обработчик нужен и просто соответствующую функцию вызывать
аллокация в куче действительно затратная операция, или она мало отличается от создания объекта на стеке ?
нет, не затратная. если ваше понимание сопутствующих процессов находится на уровне "обращение к ОС", то вам противопоказано воспринимать аллокации как затратные и вообще делать что-либо кроме как писать код максимально ясным и понятным способом
хочется еще и эффективным образом
Сколько раз в секунду будет вызываться функцию, которую ты пишешь?
Это не тот случай когда тебе надо думать о таких вещах
Это не тот случай когда надо это отвечать
Аллокация в куче не сильно затратная операция
Кому-то и O(N^3) неплохая оценка сложности алгоритма
там основная затыка в блкоировке , в случае многопотока . Решается переходом на mimalloc
мелкие да а крупные часто делаются через mmap. в Глибц предел две страницы аллокатора т.е. 128кб
Обсуждают сегодня