Я работаю с библиотекой C++, которая не была написана мной. В настоящее время я пытаюсь немного улучшить библиотеку, удалив множество круговых зависимостей.Передача объектов по значению, производительности и unique_ptr
Libray общается по сети и имеет некоторые классы сообщений, которые создаются при чтении данных, полученных из сети.
В настоящее время он работает так:
- сообщение анализируется и
std::unique_ptr<Message>
создается. - сообщение передается на родительский объект с
std::move(msg)
я удалил циклическую зависимость от сети синтаксического анализа на родительский объект и используется сигнал, вместо того, который испускает std::shared_ptr<Message>
. Мне интересно, было бы неплохо просто передать сообщение по значению вместо shared_ptr
. Это снизит производительность?
В библиотеке проходит множество объектов с unique_ptr
. Это хорошая практика?
Заранее спасибо
EDIT:
Message
состоит из трех unsigned int
и std::map<string, string>
, который не будет держать больше, чем несколько строк
Если вы получили сообщение через сетевое копирование, вероятно, не будет проблемой. – kazemakase
так передайте объект по значению вместо unique_ptr? Я думаю, это было бы гораздо более читаемым. Или есть недостатки? – schlimpf
Передача по значению обязательно скопирует карту. Если это возможно, это зависит от вашего приложения.Если вы обрабатываете сообщение только раз в то время и не заботитесь о задержках при передаче сообщения, это должно быть осуществимо. Боюсь, что только профилирование может дать вам окончательный ответ. – kazemakase