gpt4 book ai didi

json - Protocol Buffer 如何比 XML 和 JSON 快?

转载 作者:行者123 更新时间:2023-12-04 01:53:32 25 4
gpt4 key购买 nike

我最近开始在工作中阅读和使用 gRPC。 gRPC 在内部使用 Protocol Buffer 作为其 IDL,并且我一直在到处阅读,与 JSON 和 XML 相比, Protocol Buffer 的性能更好、更快。
我不明白的是——他们是怎么做到的?与 XML 和 JSON 相比, Protocol Buffer 中的哪些设计实际上使它们的执行速度更快?

最佳答案

数据的字符串表示:

  • 需要文本编码/解码(可能很便宜,但仍然是一个额外的步骤)
  • 需要复杂的解析代码,特别是如果有“必须允许空格”之类的人性化规则
  • 通常涉及更多带宽 - 因此需要更多实际有效负载 - 由于嵌入名称等内容,并且(再次)必须处理人类友好的表示(例如,如何标记语法)
  • 通常需要大量用于成员查找等的中间字符串实例

  • 基于文本和基于二进制的序列化程序都可以快速高效(或缓慢而可怕)......只是:二进制序列化程序具有优势。这意味着“好的”二进制序列化程序通常比“好的”基于文本的序列化程序更快。

    让我们比较一个整数的基本示例:

    json:
    {"id":42}

    如果我们假设 ASCII 或 UTF-8 编码并且没有空格,则为 9 个字节。

    xml:
    <id>42</id>

    如果我们假设 ASCII 或 UTF-8 编码并且没有空格,则为 11 个字节 - 并且没有像命名空间这样的命名空间噪音。

    protobuf:
    0x08 0x2a

    2 个字节

    现在想象一下编写一个通用的 xml 或 json 解析器,以及您需要在文本层处理的所有歧义和场景,然后您需要映射文本标记 "id"到成员,那么您需要对 "42" 进行整数解析.在 protobuf 中,payload 更小,加上数学很简单,并且 member-lookup 是一个整数(所以:适合非常快的 switch/jump)。

    关于json - Protocol Buffer 如何比 XML 和 JSON 快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52146721/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com