【问题标题】:Which is faster in JavaScript, JSON or SOAP parsing?JavaScript、JSON 或 SOAP 解析哪个更快?
【发布时间】:2012-09-12 22:03:18
【问题描述】:

这是两种情况。

  1. 我们正在使用带有 xmlhttprequest 的手动构建的 xml soap 请求,将其发送到 wcf soap 服务,获取响应并使用 xPath 解析数据并填写下拉列表。

  2. 我们正在向 rest wcf 服务发送一个 json 请求,并返回一个 json 响应并将值分配给一个下拉列表

哪种情况更快?我的感觉告诉我#2,但我可能是错的。

【问题讨论】:

  • 我希望选项 2 更快,但你为什么不测量而不是猜测?
  • 我打赌 JSON 会更快;这两种格式都很难解析,但 XML 和构建 DOM 的“权重”比单纯的 JavaScript 对象要大得多。然而,这只是一种预感。
  • 取决于您将使用什么库来解析每个库。我认为 JSON 对开发人员来说更舒适,最重要的是,您无需额外工作即可将 Web 应用程序用于 Web 服务
  • 这是一个使用 WCF 的基准,从 2008 年开始developers.de/blogs/damir_dobric/archive/2008/12/27/…
  • WCF - SOAP or JSON的可能重复

标签: javascript json wcf xpath


【解决方案1】:

Json 会更快,因为 Json 本质上是 Javascript。但这不应该是主要动机。无论如何,解析数据只是您应用程序的一小部分。

另一方面,浏览器也经过很好的训练来解析 XML。

主要区别在于 XML 以及因此 SOAP 发送到客户端更大,因此传输速度可能比解析更慢。

无论如何,如果你想知道,你应该只是测试和分析,而不是猜测或询问。

【讨论】:

  • 这并不总是正确的,它取决于序列化/反序列化机制。 OP 使用的 WCF 实际用于将 JSON 序列化为内部 XML 表示,然后再将其传递给客户端。
  • JSON 是满足 UTF-8 字符编码要求的二进制数据。在将其转换为 JavaScript 数据之前,仍需要对其进行解析以确保 UTF-8 字符是有效的 JSON。它的语法类似于 JavaScript 的文字符号,但说它“本质上是 JavaScript”有点牵强。
  • 可以,但这不会影响传输或解析。顺便说一句,我非常怀疑 WCF 是否会先将数据编码为 JSON,然后再编码为 XML。内部数据结构更有可能导出为 JSON 或 XML。
  • @graystateiscoming Javascript 代码本身在解析之前也必须进行编码检查。一段 JSON 可以像 UTF-8 编码的 Javascript sn-p 一样通过解析器。
  • 虽然原生 JSON 解析器肯定比基于 JavaScript 的解析器更快,但您不能仅仅假设 JSON 可以像 JavaScript sn-p 一样被处理。对 JSON 语法有更严格的要求必须遵守,并且 JSON 中允许的字符在 JavaScript 程序中是无效的。
【解决方案2】:

选项二通常比选项一更快,因为 JSON 是一种比 XML 简单得多的格式。

但是,如果您真的需要快速解析,您不应该使用任何一种,您应该使用自定义格式,使用简单的字符串操作来快速解析。例如,可以用split(',') 解析的逗号分隔字符串。

【讨论】:

  • 为什么投反对票?如果你不解释你认为错误的地方,它就无法改进答案。
  • 废话。 JSON 和 XML 都可以使用可以高度优化的内置浏览器函数进行解析。您不应该尝试用 Javascript 编写自己的解析器来尝试提高速度。此外,应该使用通用和宽容的格式进行交流。 XML 和 JSON 都是为通信目的而设计的,应该优先于某些自定义格式。
  • 这就是原因。抱歉写了几秒钟,但如果我不详细解释为什么我认为它是错误的,你可能不想改进答案。
  • @GolezTrol:有什么对你没有意义的? OP 要求速度,如果你想要,你必须牺牲通信的其他方面,这些方面可能很好,但会降低性能。
  • OP 要求比较两个通用符号。除此之外:如果性能好得多,你总是可以考虑它,但我认为牺牲这种格式的灵活性来获得一点速度增益(如果有的话)是不明智的。解析应该只占总计算时间的一小部分(如果有的话)。修改 DOM 和重新渲染页面非常耗时。如果你真的应该考虑这样的速度优化,那么 Javascript 可能一开始就不是正确的工具。
【解决方案3】:

在我的场景中进行分析后,我发现 JSON 在浏览器中的处理时间实际上要快得多

【讨论】:

  • 使用哪个JS实现?以及哪些解析器?
  • 正如预期的那样。几乎每个浏览器供应商都花费了大部分时间来优化 Javascript 引擎及其对 JSON 的支持。当您在旧版浏览器中进行测试时,您可能会得到其他结果,但在现代浏览器中这是意料之中的。 +1 用于测试。
猜你喜欢
  • 2011-12-10
  • 2012-08-10
  • 2012-08-22
  • 2014-04-28
  • 2011-07-19
  • 1970-01-01
  • 2014-07-13
  • 2013-07-13
  • 2018-12-05
相关资源
最近更新 更多