Mic*_*lMa 11 java android protocol-buffers
我想检查proto缓冲区是否是我使用的最好的序列化器,我的研究发现没有其他任何接近.我正在研究java后端和android(java)移动应用程序,但是有可能在不久的将来创建其他客户端,所以我想要跨平台的东西.粗略的数据结构草案:
message All {
repeated Line lines = 1;
Common common = 2;
}
Run Code Online (Sandbox Code Playgroud)
有几百个Line对象,每个Line都很复杂,自己需要大约100 kB.
我在proto缓冲区看到的两个问题 - 在应用程序启动时我只需要一小部分可用数据 - 只需"常用"和"Line"的基本信息.是否可以加载部分数据? - 每个Line对象包含数百个字符串,但是在多个Line对象中出现相同的字符串,因此我想尽量在这些对象之间共享它们.是否有可能在proto buf级别上,或者它是否需要成为应用程序级别的一部分?
谢谢!
从您给出的有限规格来看,很难给出适当的反馈。您表示,对于您的问题,最佳解决方案似乎是 protobuf,但我们无法根据给出的信息重新评估这一点。
根据你写的内容,我什至会说一个简单的 GZIPped 字节数组(或 JSON,因为其中大部分是可打印的(你说它们是Strings))可能更适合你(跨 Line 对象“重用”很多东西=> GZIP 将会摇滚)。
正如其他人所说:使用 protobuf 不可能加载“部分数据结构”(实际上你的数据结构不会是部分数据结构,只要“重复”部分是例如 a Collection,因为 protobuf 会负责对你的数据进行分段在结构本身)。
我会把我的两分钱放在 GZIPped JSON 流上(例如,使用 Jackson),当然在这种情况下,您会以 CPU 周期的成本来减少带宽。
| 归档时间: |
|
| 查看次数: |
232 次 |
| 最近记录: |