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

标签 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>

我使用的是 Intel 双核和 4GB RAM。

分钟?时间?

谢谢

最佳答案

以下是在 100Mb 输入文件上使用 Saxon XQuery 执行的类似任务的计时。

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

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

关于java - 使用 Java 对 100MB XML 文件进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5470710/

相关文章:

java - 在 libgdx 中绘制渐变的子集

java - public static final 和 OSGi 的编译器优化

java - SAXParseException XML 文档结构必须在同一实体内开始和结束

json - 对 API 进行 curl 并从 JSON 中获取特定字段

java - 字符串数组解析

java - 使用 REST 发送文件?

java - 无法评估所选表达式? - Eclipse 库调试错误

xml - XmlBuilder.processing 可以接受更多参数吗?

c# - 使用 C# 使用 Linq 更新 XML

python - 我怎样才能使这个语法明确?