线协议缓冲区与Cap'n proto - 哪个更好?

时间:2015-06-15 17:15:31

标签: android capnproto protocol-buffers

我目前在我的一个Android应用程序中使用有线协议缓冲区,看起来它的parseFrom()方法效率不高,因为它甚至需要大约10毫秒来解析非常少量的数据。

所以我遇到了这个:https://capnproto.org/index.html

有谁知道这两个协议缓冲区之间的主要区别是什么,主要是在性能和​​功能方面?

2 个答案:

答案 0 :(得分:4)

"有线协议缓冲器"只是Protocol Buffers的另一个实现。 Cap' n Proto是一种完全不同的,不兼容的格式。 Cap&n Proto网站上有大量文字说明它与Protocol Buffers的不同之处。 Cap&#cu; n Proto的主要问题在于它不是成熟的或广泛使用的。

如果您发现protobuf解析器需要10毫秒来解析少量数据,那么很可能会出现其他问题。通常,它应该能够在那段时间内解析大约一兆字节或更多。

答案 1 :(得分:0)

对我来说,问题是每次解析消息时都会创建Wire实例。

// Sample code 
Wire wireObj = new Wire(<extension>);
output = wireObj.parseFrom(<buffer>, <extension>);

事实证明,如果每次需要解析消息时创建一个Wire实例,那么这很费时间。但是,如果您只创建一次并将其重用于所有其他解析请求,则需要的时间非常短(<1ms)。

编辑:

注意:虽然解析第一个请求仍需要稍长的时间。