Я реализую библиотеку для сетевого протокола, которая включает в себя отправку данных с постоянной частотой 50 Гц. Фактическая передача данных будет осуществляться по отдельному потоку. В составе библиотеки будет класс, который представляет все данные, которые необходимо отправить, и библиотека позаботится о его сериализации и передаче.Отправка сетевых данных, измененная и неизменяемая структура данных
Моя проблема заключается в том, что я не уверен, как создать этот класс данных. Варианты, о которых я думал, были:
- Одиночный изменяемый объект. Посылающий поток блокирует объект, сериализует его, а затем разблокирует, чтобы клиент мог снова его модифицировать. Я думаю, что это, наверное, самый худший вариант.
- Mutable object, который клонируется библиотекой при передаче в качестве аргумента. Таким образом, вызывающий метод может модифицировать существующий объект, не мешая потоку отправки.
- Неизменяемый объект, поэтому новый должен быть создан каждый раз вызывающим методом и повторно заполнен данными.
Я не был уверен в том, что вы собираетесь клонировать маршрут, так как новый объект должен быть создан и заполнен 50 раз в секунду.
Для вариантов клонирования мне также интересно, какой лучший способ клонировать такой объект. Должен ли я использовать Object.clone(), о котором я слышал смешанные вещи, или реализовать собственный метод/конструктор копирования? Если я сделаю что-то обычай, какой будет самый надежный способ его реализации? В принципе, мне придется писать в коде, чтобы копировать каждое поле исходного объекта по одному, и я надеялся, что будет более простой способ сделать это.
Это зависит от того, насколько велики эти объекты, но обычный ПК может создавать миллионы объектов в секунду. Поэтому создание 50 объектов в секунду вряд ли станет проблемой производительности. – Jesper
Мое намерение состояло в том, чтобы использовать эту библиотеку как на смартфоне, так и на ПК. Будет ли клонирование 50 раз/сек проблемой для современных смартфонов? – AniDev