我们需要我们的protobuf消息包含尽可能少的数据。那么我们可以遵循哪些最佳实践来获得最大的实践。例如,将byte[]
写为String
或ByteString
?有什么区别?并将Integer
列表添加为重复列表或其他内容?
答案 0 :(得分:2)
作为一个例子,将byte []写为Srting或ByteString?
如果要编写二进制数据,请使用bytes
字段(ByteString
)。 string
字段是UTF-8编码的文本,因此不能用于所有可能的字节序列。
并将整数列表添加为重复列表或其他内容?
是的,使用重复列表 - 但使用[packed=true]
option。
基本上,查看整个encoding documentation并找出最适合您的方法。特别是,根据您的实际数据,在各种数字表示之间进行仔细选择。 (如果您正在编写通常非常大的32位值,请考虑使用fixed32
格式而不仅仅是int32
。)