我必須對VTD-XML庫進行性能測試,以便不僅能夠進行簡單的解析,還能解析其他轉換。 所以我有30MB的輸入XML,然後用自定義邏輯將它轉換爲其他XML。 因此,我想刪除所有的思考,這會減慢來自我身邊的整個過程(因爲不善於使用VTD庫)。 我試圖搜索優化技巧,但無法找到它們。 我注意到:VTD-XML解析優化?
'0'。有什麼更好的選擇selectXPath或selectElement?
使用不帶命名空間的解析速度要快得多。
File file = new File(fileName); VTDGen vtdGen = new VTDGen(); vtdGen.setDoc_BR(new byte[(int) file.length()]); vtdGen.parse(false);
Read from byte or pass到VTDGen?
final VTDGen vg = new VTDGen(); vg.parseFile("books.xml", false);
或
// 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);
使用第二種方法 - 0.01倍的速度......(可以是一切)
有什麼用parseFile的差異文件是高達有限2GB與namespaceaware真正的1GB,但什麼字節的方法?
- 重用緩衝區
- 調整LC級別爲5
- 索引
- 覆寫特徵
你可以問VTDGen重用VTD緩衝區下一個解析任務。 否則,默認情況下,VTDGen將爲每個解析運行分配新的緩衝區。
你能舉個例子嗎?
默認情況下,它是3。但是你可以將其設置爲5,當你的XML深感 嵌套,設置LC級別爲5會導致更好的XPath性能。但是 它會非常輕微地增加內存使用和解析時間。
VTDGen vg = new VTDGen();
vtdGen.selectLcDepth(5);
但有運行時異常。只有3
作品使用VTD + XML indexing-而是在 處理請求的時間解析XML文件,你可以預先指數將您的XML轉換爲VTD + XML格式,並將其轉儲到磁盤上。處理請求開始時,只需在內存中加載 VTD + xml,就不再需要解析了!
VTDGen vg = new VTDGen();
if (vg.parseFile(inputName,true)){
vg.writeIndex(new FileOutputStream(outputName));
}
誰能知道如何使用它?會發生什麼,如果該文件的變化,如何卸料新的重新索引。而如果在3GB 10KB變化並解析需要時間整個新文件進行解析或者只是爲了改變線路?
覆寫特徵又名。數據templating-因爲VTD-XML保留在內存中 XML原樣,實際上就可以創建一個模板XML文件 (預索引,在VTD + XML),其值字段保留空白,讓 您的應用程序填空題,從而創建永遠需要 XML數據進行解析。