我必须对VTD-XML库进行性能测试,以便不仅进行简单的解析,而且在解析中进行额外的转换。所以我有30 to的输入XML,然后用自定义逻辑将它转换为其他XML。因此,我想删除所有减慢整个进程的想法(因为没有很好地使用VTD库)。我试图搜索优化技巧,但找不到。我裸露了:
“0”选择selectXPath或selectElement更好的方法是什么?
或
// open a file and read the content into a byte array
File f = new File("books.xml");
FileInputStream fis = new FileInputStream(f);
byte[] b = new byte[(int) f.length()];
fis.read(b);
VTDGen vg = new VTDGen();
vg.setDoc(b);
vg.parse(true);使用第二种方法
与parseFile有什么不同,文件是有限的,upTo 2GB,具有名称感知的true和1GB的witout,但是字节方法有什么区别呢?
您可以要求VTDGen为下一个解析任务重用VTD缓冲区。否则,默认情况下,VTDGen将为每次解析运行分配新缓冲区。
你能举个例子吗?
默认情况下,它是3。但是您可以将其设置为5。当您的XML被深度嵌套时,将LC级别设置为5可以提高XPath性能。但是它稍微增加了内存使用和解析时间。
VTDGen vg = new VTDGen();
vtdGen.selectLcDepth(5);但是有运行时异常。只与3工作
使用VTD+XML索引--而不是在处理请求时解析XML文件,您可以将XML预索引为VTD+XML格式并将其转储到磁盘上。当处理请求开始时,只需在内存中加载VTD+xml,就不再需要解析了!!
VTDGen vg = new VTDGen();
if (vg.parseFile(inputName,true)){
vg.writeIndex(new FileOutputStream(outputName));
}有人知道怎么用吗?如果文件发生了变化,如何重新编制新的索引呢?如果3GB中有10 or的变化,解析将需要时间来完成整个新的文件解析,还是只需要对更改的行进行分析?
覆盖功能也就是。数据模板--因为vtd+xml将XML保留在内存中,所以您实际上可以创建一个模板XML文件(在vtd+xml中进行预索引),其值字段为空,并让应用程序填充空白,从而创建不需要解析的XML数据。
发布于 2016-08-17 19:59:10
我认为您应该看看与vtd-xml发行版捆绑在一起的示例.逐步积累专业知识..。幸运的是,在我看来,vtd-xml是最简单的XML API之一.所以学习曲线不会是SAX/STAX有点困难。
我对你上面的编号清单的回答..。
3.缓冲区重用是一种高级特性.让我们稍后再谈一谈
4.如果您获得了最新版本(2.13),您将不会得到该方法调用的运行时异常。
https://stackoverflow.com/questions/38999505
复制相似问题