写点什么

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

  • 2013-08-14
  • 本文字数:1004 字

    阅读完需:约 3 分钟

对于与 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

2013-08-14 02:426171
用户头像

发布了 256 篇内容, 共 81.1 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

STI即将登录Gate.io,我们有哪些期待?

小哈区块

使用ORM与原始SQL的性能对比

杨彦星

Python MySQL sanic

科创中国开源创新榜单发布,EMQX 获评“年度优秀开源产品”

EMQ映云科技

开源 物联网 IoT emq emqx

知名固件供应商百敖软件加入龙蜥社区

OpenAnolis小助手

开源 生态 龙蜥社区 CLA 百敖软件

多个私有云设施管理用什么云管理软件好?

行云管家

云计算 私有云 云管理 多有云

【分享汇总】AIoT开源科技节暨OpenHarmony技术论坛(附链接)

OpenHarmony开发者

OpenHarmony AIoT开源科技节

测试权限

石子头

搭建一个可视化看板,仅需4步

阿里云云效

云计算 阿里云 看板 研发团队 可视化看板

Pulsar Summit Asia 2021|Pulsar在移动云智能运维平台的实践

移动云大数据

pulsar

借品牌升级之际,谈一谈技术开发者为什么选择 InfoQ 写作社区

宇宙之一粟

4月月更 InfoQ写作社区2周年

公司产品手册的编写方法

小炮

企业 产品宣传手册

【技术加油站】浅谈百度智能测试的三个阶段

百度Geek说

测试

数据挖掘:针对小样本与不均衡样本的机器学习算法实践

鲸品堂

数据挖掘

netty系列之:netty中的frame解码器

程序那些事

Netty 程序那些事 java 4月月更

百度程序员开发避坑指南(移动端篇)

百度Geek说

移动端

百度程序员开发避坑指南(3)

百度Geek说

前端

如何成为更好的AI专业人员?请查收这7条实战经验

Baihai IDP

人工智能 算法 数据科学

四川数字经济发展分析:四川21市州数字经济发展活跃度解密

易观分析

数字化转型 数字化经济

多方安全计算升级数据治理技术体系需考虑数据源合规性等

易观分析

多方安全计算

4. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识wrk、wrk2

MASA技术团队

C# .net 微软 测试 压测

详解离线数仓和实时数仓的区别

五分钟学大数据

4月月更

ironSource 发行解决方案 Supersonic 两周年,游戏全球下载量突破 20 亿

极客天地

2022年4月中国数据库排行榜:华为GaussDB 挺进前四,榜单前八得分扶摇直上

墨天轮

数据库 国产数据库 达梦 人大金仓 gbase8a

恒源云(Gpushare)_炼丹萌新指南,这次错不了!

恒源云

深度学习 GPU算力 算法训练

开源分布式图数据库的思考和实践

NebulaGraph

图数据库 知识图谱

hash,bloomfilter,分布式一致性hash

Linux服务器开发

分布式 hash 后端开发 Linux服务器开发 C++后台开发

TiDB源码系列之沉浸式编译TiDB

TiDB 社区干货传送门

百度工程师教你快速提升研发效率小技巧

百度Geek说

前端

VNC中文是什么意思?全称是什么?

行云管家

运维 服务器 vnc

ArduBee|开源技术背后的创新

科技热闻

SVGIcon 组件的构建与使用

全象云低代码

前端 低代码 SVG 低代码平台 图标库

XML能够拥有与JSON相当的性能_SOA_Jan Stenberg_InfoQ精选文章