协议缓冲区上的WebSocket(protobufs)/二进制与JSON/文本性能

协议缓冲区上的WebSocket(protobufs)/二进制与JSON/文本性能,json,performance,websocket,binary,protocol-buffers,Json,Performance,Websocket,Binary,Protocol Buffers,protobufs作为二进制数据通过WebSocket发送是否比JSON作为文本数据通过WebSocket发送更快?与纸面上一样,这似乎是正确的,即使考虑到两侧处理字节所产生的小开销也是如此。有没有人真的有机会尝试一下,并取得了一些具体的成果?谢谢 所以我做了一个小项目来研究这个问题,我得到了一些结果。您可以在自述文件和结果包中找到项目,也可以找到更多信息 回答问题是,协议缓冲区比JSON快,超过10万条以乒乓方式发送的消息(除了编组和解编组,它们没有处理)。但差别并不像我预期的那么明显。这是一

protobufs作为二进制数据通过WebSocket发送是否比JSON作为文本数据通过WebSocket发送更快?与纸面上一样,这似乎是正确的,即使考虑到两侧处理字节所产生的小开销也是如此。有没有人真的有机会尝试一下,并取得了一些具体的成果?谢谢

所以我做了一个小项目来研究这个问题,我得到了一些结果。您可以在自述文件
结果
包中找到项目,也可以找到更多信息


回答问题,协议缓冲区比JSON快,超过10万条以乒乓方式发送的消息(除了编组和解编组,它们没有处理)。但差别并不像我预期的那么明显。

这是一个不可能不具体地问/答的问题;例如,对于许多“小”消息:这无关紧要——关键性能因素将是网络性能,并且无论哪种方式,它都是单个数据包;是的,protobuf会稍微小一些(通常相当小),但对于许多小消息来说:这真的不重要。从浏览器使用JSON显然要简单得多。但是没有,我从来没有做过艰苦的工作来完全证明这一点。这篇文章真的让我很感兴趣,它表明protobuf中的较小消息实际上并不比json中的小“很多”,但实际上要小得多,非常有趣的是,protobuf消息总是比它们的等效json占用更少的空间(可能除了一些数字文字等),所以发送它们总是更快。另一个问题是编码/解码它们需要多长时间。