假设您正在谈论使用 JSON 而不是自定义格式(使用 MIME 类型 )来传递结构化数据。text/plain
性能可以分解为不同的组件;例如:
- 将内容编码为格式所需的相对时间,
- 解码格式以向您提供原始内容所花费的相对时间,以及
- 编码内容的相对大小。
从理论上讲,我们可以说,假设的最佳设计和实现的自定义格式不会比JSON慢或密度低。(“证据”是显而易见的。选择 JSON 的最佳实现,并对格式进行一些不影响性能的微小更改。
但实际上,您必须比较实际格式和实际实现的性能。因此,答案是性能实际上取决于您在设计和实现格式及其相关编码/解码软件方面做得有多好。此外,它还取决于您如何实现 JSON。有许多服务器端JSON库具有不同的性能特征,以及将数据从/映射到“本机”数据结构的不同方式。
这给我们带来了JSON(和XML)相对于自定义格式的真正优势。
-
借助 JSON 和 XML,您选择使用的任何主流语言都有可用的库,以帮助编码和解码内容。使用自定义格式,您必须为客户端和服务器端滚动自己的编码/解码。
-
使用JSON和XML,有些标准可以说明什么是格式良好的,允许其他人实现编码器/解码器。使用自定义格式,如果您希望其他人能够实现您的格式,则必须自己编写规范。
-
JSON和XML具有处理字符集编码和数据中出现的“元”字符等问题的标准方法。通过自定义,您必须了解并解决这些问题。(如果你不这样做,你很可能会陷入困境。
-
易于更改。发展基于JSON / XML的格式是一件相对简单的事情。但是使用自定义格式,您(至少)有更多的工作要做,并且根据您的设计选择,这可能非常困难。
对于大多数应用程序,这些问题远远大于性能。这就是为什么JSON或XML被广泛使用的原因。
随访
但是,如果您假设我没有使用自定义实现,并将发送具有哑剧类型的文本/纯文本/纯文本的JSON与哑剧类型的应用程序/json的JSON进行比较呢?
那么答案是它几乎没有性能差异。
- 在 HTTP 请求或响应标头中保存 6 个字节,因为 mime 类型字符串较短,但对于大小以千字节为单位测量的典型 HTTP 消息,这无关紧要。
- 使用“文本/纯”内容类型对编码/解码请求或响应消息所需的工作没有影响...除了比较/复制6个额外字节所花费的时间外,这可能太小而无法测量。
此外,使用不准确的MIME类型(可以说)违反了HTTP规范。如果这样做:
简而言之,我想不出有充分的理由来做这件事1,还有一些很好的理由不这样做。
1 - 一般而言。显然,会有边缘情况...