如何获取XML文档的大小
从性能的角度来看,有两种方法来处理XML文件。批处理时间短解析组文件。真正的时间是在实时处理文件,批处理的性能可以通过在一定的时间过程多少文件测量和实时模式的性能同样的测量,但它需要很长的时间来处理一个文档。
场景场景
假设你有一个实时工作系统,比如Web,系统需要实时接收客户的订单,并且需要立即响应订单。
该系统明显不批处理的方式,一个简单的估计,假设这是一个非常简单的命令,只有十项,因此生成的XML文件都比较小,大概每个文档是4KB。在这种情况下,DOM是用于解析文件的收据。
如果你的订单每小时只有几个小时,那么系统性能对你来说不是问题,但从长远来看,订单数量将超过一天,以便你意识到系统性能必须得到改善。
现在你开始考虑提高性能以适应增长的负荷。你的订单文件很小,而且也没有任何实际意义的合并成更大的文件。从纵向来看,可以提高目前现有系统的处理能力;从横向考虑,你可以添加更多的系统将负载。
看看另一个完全不同的领域,你将要面对的是一个大的数据仓库。不像网络,你现在使用的FTP和300MB的平均大小发送XML文档。如果你仍然使用DOM解析XML文档,你很快就会有很多麻烦。另一方面,如果你使用SAX,那就更好了,它可以解析XML文档的流入无需加载在内存中预先。
更改文档的大小
有时您有一个特殊的情况,需要更改XML文档的大小。同时,所有的文件都400mb相反4KB。您不能使用DOM模式,因为内存太多,但因为这是一个实时系统,性能非常重要,您可以使用SAX,但允许使用强大的处理器需要时间。
在这种情况下,您可以通过更改该文件的大小,提高了系统的性能。例如,你可以将一个400MB的文件为10 40mb或40 10mb小文件,这是不是一个文档处理一个400MB的效率更高。这样,你可以使用DOM来读取文件到内存处理并及时回应每个文档的要求。同时,你可以清除无关的文件。
在批处理方式类似情况。想象你是4KB大小的文件处理成千上万的DOM的批处理的方式,最好的方式就是合并一千个文件到一个4MB的文件。因为每个文件的加载需要占用系统时间(无论是DOM或SAX一千)。通过合并成一个文件,你只需要加载一个文件,只有1 / 1000的原始时间。