我想检查原始缓冲区是否是我使用的最好的序列化程序,我的研究发现没有其他的接近.
我正在处理 java后端和android( java)移动应用程序,但是可能在不久的将来会创建其他客户端,所以我想要一个跨平台的东西.
数据结构粗略:
我正在处理 java后端和android( java)移动应用程序,但是可能在不久的将来会创建其他客户端,所以我想要一个跨平台的东西.
数据结构粗略:
message All { repeated Line lines = 1; Common common = 2; }
有几百个Line对象,每行都相当复杂,自己需要〜100 kB.
我使用原始缓冲区看到的两个问题
– 在应用程序启动时,我只需要一小部分可用的数据 – 只需“常用”和“Line”的基本信息.是否可以加载部分数据?
– 每个Line对象包含数百个字符串,但是在多个Line对象中会出现相同的字符串,因此我想尝试在这些对象之间共享它们.是否可能在原始buf级别,还是需要成为应用程序级别的一部分?
谢谢!
解决方法
从您给出的有限规格,很难给出适当的反馈.你说,对于你的问题,最好的解决方案似乎是protobuf,但是我们不能从给出的信息重新评估.
根据你写的内容,我甚至会说一个简单的GZIPped字节数组(或者大部分是可打印的JSON)(可以说是他们是Strings))可能会更好(“重复使用”跨线对象的很多东西=> ; GZIP将摇滚).
正如其他人所说:使用protobuf,不可能加载“部分数据结构”(实际上你不会是部分数据结构),只要“重复”部分是一个集合,因为比protobuf将会分配你的结构本身的数据).
我会把我的两美分GZIPped JSON流(例如,与杰克逊),当然,在这种情况下,您将减少带宽与cpu周期的成本.