使用Java对100MB XML文件进行排序?

use*_*406 0 java xml parsing

使用Java对100MB XML文件进行排序需要多长时间?

该文件具有以下结构的项目,我需要按事件对它们进行排序

<doc>
    <id>84141123</id>
    <title>kk+ at Hippie Camp</title>
    <description>photo by SFP</description>
    <time>18945840</time>
    <tags>elphinstone tribalharmonix vancouver intention intention7 newyears hippiecamp bc sunshinecoast woowoo kk kriskrug sunglasses smoking unibomber møtleykrüg </tags>
    <geo></geo>
    <event>47409</event>
</doc>
Run Code Online (Sandbox Code Playgroud)

我使用的是Intel Dual Duo Core和4GB RAM.

分钟 ?小时 ?

谢谢

Mic*_*Kay 7

以下是使用Saxon XQuery在100Mb输入文件上执行的类似任务的时间安排.

Saxon-EE 9.3.0.4J from Saxonica
Java version 1.6.0_20
Analyzing query from {for $i in //item order by location return $i}
Analysis time: 195 milliseconds
Processing file:/e:/javalib/xmark/xmark100.xml
Using parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
Building tree for file:/e:/javalib/xmark/xmark100.xml using class net.sf.saxon.tree.tiny.TinyBuilder
Tree built in 6158 milliseconds
Tree size: 4787932 nodes, 79425460 characters, 381878 attributes
Execution time: 3.466s (3466ms)
Memory used: 471679816
Run Code Online (Sandbox Code Playgroud)

所以:解析输入文件和构建树大约需要6秒,对它进行排序需要3.5秒.这是从命令行调用的,但从Java调用它将获得非常相似的性能.不要尝试自己编写代码 - 它只是一行查询,而且你不太可能匹配优化的XQuery引擎的性能.