【发布时间】:2015-06-15 17:15:30
【问题描述】:
我目前在我的一个 android 应用程序中使用有线协议缓冲区,看起来它的 parseFrom() 方法效率不高,因为即使解析非常少量的数据也需要大约 10 毫秒。
所以我遇到了这个:https://capnproto.org/index.html
有谁知道这两个协议缓冲区之间的主要区别是什么,主要是在性能和功能方面?
【问题讨论】:
标签: android capnproto protocol-buffers
我目前在我的一个 android 应用程序中使用有线协议缓冲区,看起来它的 parseFrom() 方法效率不高,因为即使解析非常少量的数据也需要大约 10 毫秒。
所以我遇到了这个:https://capnproto.org/index.html
有谁知道这两个协议缓冲区之间的主要区别是什么,主要是在性能和功能方面?
【问题讨论】:
标签: android capnproto protocol-buffers
“Wire Protocol Buffers”只是 Protocol Buffers 的另一种实现。 Cap'n Proto 是一种完全不同的、不兼容的格式。 Cap'n Proto 网站有很多文字说明它与 Protocol Buffers 的不同之处。 Cap'n Proto 的主要问题是它不够成熟或没有被广泛使用。
如果你发现一个 protobuf 解析器需要 10ms 来解析少量的数据,那很可能还有其他问题。通常,它应该能够在那段时间内解析大约 1 兆字节或更多。
【讨论】:
对我来说,问题是每次解析消息时都会创建 Wire 实例。
// Sample code
Wire wireObj = new Wire(<extension>);
output = wireObj.parseFrom(<buffer>, <extension>);
事实证明,如果每次需要解析消息时都创建一个 Wire 实例,那么它很耗时。但是,如果您只创建一次并将其重用于所有其他解析请求,则所需时间会非常短(
编辑:
注意:解析第一个请求仍然需要稍长的时间。
【讨论】: