#java #protocol-buffers
#java #буферы протокола
Вопрос:
Для моего использования буферов протокола мне нужно сериализовать 4 целых числа (не более) внутри каждого сообщения буфера протокола.) сообщение. Я хочу, чтобы при извлечении этих 4 целых чисел из сообщения я получал их как int
, а не как Integer
. (Причина этого в том, что мне нужны действительно быстрые вычисления и проверка равенства (с некоторым другим int) для этих извлеченных целых чисел)
Если я использую repeated
тип в сообщении PB, то при синтаксическом анализе из байтов я получаю list
of Integer
. Таким образом, я планирую использовать 4 разные переменные(каждая int32
с optional
тегом) внутри каждого сообщения PB вместо использования repeated
. Таким образом, я ожидаю получить целые числа как int
, а не как Integers
Хорошая ли это идея и поможет ли это мне?
Ответ №1:
Это, безусловно, позволит избежать проблемы со «списком». В regular .proto размер будет таким же, пока номера полей маленькие — единственной разницей в проводке будут разные номера полей вместо одного и того же числа 4 раза. Однако, если ваш список в настоящее время использует опцию «упакованный», он будет незначительно больше, чем 4 поля.
Лично я думаю, что, поскольку размер ограничен 4, подход с 4 полями более точно отражает ваш сценарий, поскольку в противном случае ничто не помешает вам добавить 20 значений. Я полностью за подход с 4 полями здесь.