• 售前

  • 售后

热门帖子
入门百科

得到XML文档巨细的方法

[复制链接]
形腿望舞 显示全部楼层 发表于 2021-8-19 19:25:39 |阅读模式 打印 上一主题 下一主题
XML文档从格式到巨细都是不是确定的。有的可能只有几行,而有的却有好几兆字节。你大概会猜疑是不是须要了解XML文档的巨细。而当性能成为首要问题时,知道XML文档巨细就是件必须要作的事变了。


从性能角度讲,有两类处置惩罚XML文档的方法。批量处置惩罚方式须要较短的时间,解析成组的文档。及时方式就是及时的处置惩罚文档。批处置惩罚方式的性能可以通过在一定时间内处置惩罚多少文档来测量,而及时模式的性能也接纳雷同的测量方式,不过是以处置惩罚一个文档须要多长时间来盘算的。


Scenarios场景
想象一下,你有一个及时工作的系统,比如一个Web服务器。这个系统须要及时的接收客户发来的订单,并须要立即对这个订单举行相应。

这个系统显然不能用批量处置惩罚的方式举行。简朴的估计一下,假设这是个很简朴的订单,只有十个项目,如许所天生的XML文档就比较小,大概每个文档是4KB。这种情况下,使用DOM来解析收到文档。

如果你的订单每小时只有几个,那么系统性能对你来说还不是问题。但是久远思量,总有一天订单的数目会多到令你意识到系统性能必须进步。

现在你开始思量进步性能来顺应增长的负荷。你的订单文档已经很小了,把它们合并成较大的文档也没有什么实际的意义。从纵向思量,这时间你可以进步现有系统处置惩罚能力;从横向思量,你可以增加更多的系统将负荷分散开。

再看看另一个完全不同的范畴,你现在要处置惩罚的是一个大型的数据堆栈。和Web服务器完全不同,你现在用FTP来传输均匀巨细为300MB的XML文档。如果还是使用DOM来解析XML文档,你很快就会碰到大贫苦。相反,如果你使用SAX就会好的多,它可以直接解析流入的XML文档,而不必把它们事先都装入内存。


改变文档尺寸
有时间你会碰到特殊情况须要改变XML文档巨细。想象一下,和刚才一样你有一个及时处置惩罚XML文档的Web服务器,而此时全部的文档巨细都是400MB而不是4KB,你不能使用DOM方式,因为那太占内存了。可是因为这是个及时系统,性能很紧张。你可以使用SAX,不过须要时间允许并要有强大的处置惩罚器。

在这种情况下,你可以通过改变文档巨细来改进系统执行性能。比如你可以将一个400MB的文档分成10个40MB的,或者40个10MB的小文档,这比起处置惩罚一个400MB的文档更有效率。如许你就可以使用DOM方式把文件读入内存举行处置惩罚,及时相应每个文档的请求了。同时还可以扫除掉不相关的文档。

在批量处置惩罚方式上也有雷同情况。想象一下你在通过DOM的批处置惩罚方式处置惩罚数千个4KB巨细的文档。最好的方式是将一千个文件合并成一个4MB的文件。因为每个文档的载入都须要占用系统时间(不论是DOM还是SAX)。通过将一千个文档合并成一个,你只须要载入一个文档,占用的时间只是原来的千分之一。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作