BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

XML能够拥有与JSON相当的性能

| 作者 Jan Stenberg 关注 34 他的粉丝 ,译者 李彬 关注 1 他的粉丝 发布于 2013年8月15日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

对于与JSON的轻量级负荷相比,“胖”XML是如何缓慢、如何消耗资源的众多推测,都在David Lee的一项测试面前败下阵来。David是Marklogic的首席工程师,他的实验使用33份不同文档,对最常用的浏览器和操作系统做了接近1200项测试。而后他表示,实验发现,对于总体用户体验方面的性能来说(传输、解析和查询某文档),XML和JSON格式几乎难分轩轾。

在实验中,David创建了一个公开测试环境,模拟了这样的用例:使用Web服务器传输XML和JSON文档,并在Web浏览器中解析和查询。服务器为客户端提供源数据并收集客户端提交的结果。客户端是一个基于浏览器的JavaScript应用,其中除了测试jQuery性能的部分外,还包含了使用JavaScript人工编写的性能测试部分。

David使用了7份不同文档,它们的大小分布在从100KB到1MB的区间里,并且每份文档采用两种JSON和三种XML变体。此外,他还尝试让测试覆盖大量的设备、浏览器、操作系统和网络。为了实现这一目的,他采用了“众包”的方式,也即将测试环境URL公布出来,并发布到一系列邮件列表和社交媒体网站上。迄今为止,已经成功收集了接近1200份独立、有效的测试结果,覆盖了最常用的浏览器和操作系统。在文章中,David记录了全部测试数据,以及来自不同测试的结果。

通过该实验,David得出的部分结论如下:

  • 解析速度与使用的技术有关。一般来说,纯JavaScript解析XML比解析JSON表现要好,而对JSON的查询速度一般则更快一些。不过对两种格式也都存在一些测试结果相反的例外。
  • 使用JavaScript库jQuery,会对JSON造成严重的影响,而对XML来说则更糟。
  • 用各种格式压缩后的文档——即使对非常大的JSON或XML文档——两种格式都会压缩到近乎同样的大小,这意味着他们实际上包含几乎一样的信息内容。
  • 当将文档传输到广泛的设备上时,对每个终端来说传输所花费的时间几乎都是相同的,而与标记格式无关

基于他的实验,David为架构师和开发者提出了若干建议,包括:

  • 使用HTTP压缩,在大多数情况下它是对整体性能影响最大的单一因素。
  • 优化传输和查询的标记。
  • 除非与其他问题相比,数据传输、解析和查询是显著问题,否则不要进行优化。

最后,David给出了一条忠告:

不要轻信任何人。

不要盲目地相信别人告诉你的东西。自己动手实验,基于自己的用户和设备来测试自己的数据和代码。那些“看起来显而易见”的事情并不总是对的。

查看英文原文:XML Can Give the Same Performance as JSON

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

问题是XML怎么解决数据加载的跨域限制问题? by liu pi1ot

问题是XML怎么解决数据加载的跨域限制问题?

Re: 问题是XML怎么解决数据加载的跨域限制问题? by Hu Qian

data:
var json={};
var xml='<xml>';

<script src="dataurl"></script>

这样?

David给出了一条忠告:不要轻信任何人。 by 贾 珣

David给出了一条忠告:不要轻信任何人。
赞=)

Re: 问题是XML怎么解决数据加载的跨域限制问题? by 贾 珣

JSON也同样存在跨域问题,跨域一般就是服务端给出允许跨域的响应头,或者通过类似JS脚本的方式加载跨域的数据(如果没有理解错的话也就是JSON-P),本文应该说的就是解析的快慢哈。

Re: 问题是XML怎么解决数据加载的跨域限制问题? by liu pi1ot

至少json有各家都支持的通用方案,而xml走xmlhttp的话无解

各取所需 by rui li

我认为JSON/XML只是针对同一个问题提出的两个不同的解决方案而已,具体采用哪一种,应视项目采用的组件而定。单纯的比较优劣没有意义。
XML是人机通用格式,但JSON让JS开发者觉得更方便。两者永远不能替代对方。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

6 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT