我用其他多种数据格式(xml,json,默认对象序列化,粗麻布,一种专有的格式)和用于数据绑定任务(读写)的库(jaxb,快速信息集,手写体)测试了PB的性能,但未包含节俭的格式。具有多个转换器(如xml)的格式的性能差异很大,从非常慢到非常快。作者的主张与感知的表现之间的相关性很弱。特别是对于声称是最疯狂的包装。
对于它的价值,我发现PB的性能有点过分夸大(通常不是它的作者,而是其他只知道谁写的人)。使用默认设置,它没有击败最快的文本xml替代方法。使用优化模式(为什么不是默认模式?),它速度更快,与最快的JSON包相当。粗麻布的速度相当快,文本json也是如此。专有的二进制格式(此处未命名,它是公司内部的)是最慢的。对于较大的消息,Java对象的序列化速度很快,而对于较小的对象,Java对象的序列化速度较快(例如,每个操作的noverhead固定值较高)。使用PB消息时,消息的大小是紧凑的,但是要进行所有折衷处理(数据不是自描述性的:如果丢失架构,则会丢失数据;当然还有索引和值类型,但取决于您拥有的内容)如果需要,可以反向工程回字段名称),
我的观点是(a)实施通常比规范(数据格式)更为重要,(b)端到端,同类最佳(针对不同格式)之间的差异通常不足以指示选择。也就是说,最好选择最喜欢使用的format + API / lib / framework(或具有最佳的工具支持),找到最佳的实现,然后看看它是否足够快地工作。如果(且仅当!)不是,则考虑下一个最佳选择。
ps。不知道这里是什么EJB3。也许仅仅是Java序列化?