写点什么

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:425881
用户头像

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

关注

评论

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

Github标星42K!不愧是腾讯云大神亲码的“redis深度笔记”

采菊东篱下

Java redis 面试

DDD洋葱架构才是 yyds!阿里大牛手记(DDD)领域驱动设计应对之道

做梦都在改BUG

Java 领域驱动设计 DDD 架构师

在Vue中,为什么从 props 中解构变量之后再watch它,无法检测到它的变化?

Lee Chen

JavaScript Vue3

从阿里出发看微服务发展!P8架构师手打800页微服务深度解析笔记

做梦都在改BUG

Java 架构 微服务

Mac 无线网络扫描工具:WiFi Explorer 3.4.2 (57)激活汉化版

真大的脸盆

无线管理 wifi工具

Spring Boot自动配置原理详解和自定义封装实现starter

做梦都在改BUG

Java Spring Boot 自动配置

Java岗程序员必备学习方向,全会拿45Koffer没问题!

Java你猿哥

Java 面试 面经 Java工程师 春招

ChatGPT - SpringBoot Prompting Chain

Marvin Ma

软件开发 ChatGPT

系统清理工具:Cocktail 16.3.3注册激活版

真大的脸盆

Mac Mac 软件 清理工具 清理优化 清理优化软件

D-ONE计划解读|得帆云DeCode持续引领低代码产品演进!

得帆信息

新产品 低代码平台 aPaaS

前端面试实录HTTP篇

Immerse

https HTTP 前端面试 前端已死

Bettertouchtool for Mac(触摸板增强神器)使用教程

理理

BetterTouchTool破解 BetterTouchTool教程 Mac触控板增强

VMware fusion pro13下载 VM虚拟机安装教程

理理

VMware Fusion Pro 13 VMware Fusion虚拟机 VM虚拟机破解版

【AIGC未来的发展方向】面向人工智能的第一步,一文告诉你人工智能是什么以及未来的方向分析

洛神灬殇

人工智能 4月日更 AIGC ChatGPT

QEMU事件循环机制

Linux内核拾遗

Linux Kenel 虚拟化 事件和事件循环 qemu kvm

了解5G安全标准,看这一篇就够了

俞凡

安全 网络 通信

TCP协议中的粘包和半包问题

做梦都在改BUG

TCP TCP协议 粘包 半包

肝完阿里最新Java并发编程全优笔记,我成功晋升公司架构组

Java你猿哥

Java 架构师 并发 面经 Java工程师

LED显示屏近年来在中国的发展趋势

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

Photoshop如何更改语言?最新版PS2023自带中英文语言切换

理理

Photoshop 2023下载 Photoshop 2023破解版 PS2023下载 如何切换PS语言

阿里内部一份手打524页《Java中高级核心知识》令人犹如醍醐灌顶

程序知音

Java java面试 java架构 后端技术 Java面试八股文

intellijidea卸载重装无法打开怎么办?IntelliJ IDEA彻底卸载教程

Rose

IntelliJ IDEA 2023下载 IntelliJ IDEA 2023破解 IntelliJ IDEA 2023最新 IntelliJ IDEA卸载

开源7天Github斩获4.5万Stars!阿里2023版高并发设计实录鲨疯了

程序员小毕

数据库 程序员 面试 高并发 架构师

十年程序老狗手写分布式服务架构:原理、设计与实战

小小怪下士

Java 程序员 分布式 后端

MacOS SVN 客户端:Cornerstone 4永久许可证

理理

Mac 系统 SVN客户端 Cornerstone for Mac Cornerstone下载 Cornerstone 4

Macos壁纸软件|动态壁纸Dynamic Wallpaper灵动你的桌面!

理理

Dynamic Wallpaper下载 mac动态壁纸 Mac壁纸app 苹果软件资源站 壁纸高清

网络IO模型BIO->Select->Epoll多路复用的进化史

做梦都在改BUG

好家伙!GitHub公选“头牌”阿里大牛开源1300页炫彩性能调优手记

做梦都在改BUG

Java 性能优化 性能调优

千亿流量并发治理!Alibaba实战Sentinel笔记,为微服务保驾护航

做梦都在改BUG

Java 微服务 sentinel 高并发 流量治理

5分钟搞懂NESAS

俞凡

安全 网络 通信

智慧改变公厕,市政智慧公厕方案解决城市公共厕所难题

光明源智慧厕所

智慧城市

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