2016-08-17 91 views
0

我必須對VTD-XML庫進行性能測試,以便不僅能夠進行簡單的解析,還能解析其他轉換。 所以我有30MB的輸入XML,然後用自定義邏輯將它轉換爲其他XML。 因此,我想刪除所有的思考,這會減慢來自我身邊的整個過程(因爲不善於使用VTD庫)。 我試圖搜索優化技巧,但無法找到它們。 我注意到:VTD-XML解析優化?

'0'。有什麼更好的選擇selectXPath或selectElement?

  1. 使用不帶命名空間的解析速度要快得多。

    File file = new File(fileName); 
    VTDGen vtdGen = new VTDGen(); 
    vtdGen.setDoc_BR(new byte[(int) file.length()]); 
    vtdGen.parse(false); 
    
  2. Read from byte or passVTDGen

    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,但什麼字節的方法?

  • 重用緩衝區
  • 你可以問VTDGen重用VTD緩衝區下一個解析任務。 否則,默認情況下,VTDGen將爲每個解析運行分配新的緩衝區。

    你能舉個例子嗎?

  • 調整LC級別爲5
  • 默認情況下,它是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數據進行解析。

    回答

    0

    我認爲你應該看看與vtd-xml版本捆綁在一起的例子......並逐步建立專業知識...幸運的是,vtd-xml是我認爲的最簡單的XML API之一保證金......這樣的學習曲線不會是SAX/STAX樣的困難。

    我的回答你上面的編號列表...

    1. selectXPath是XPath計算。 selectElement類似於getElementByTag()

    2. 打開命名空間感知對解析性能幾乎沒有任何影響......您可以參考100倍放緩索賠的來源嗎?

    3. 你可以從字節讀取或直接從文件中讀取......這裏是一個博客帖子的鏈接

      https://ximpleware.wordpress.com/2016/06/02/parsefile-vs-parse-a-quick-comparison/

    3.Buffer重用有點先進的feature..let的得到,在以後的時間

    如果你獨自獲得最新的版本(2.13),你不會得到與該方法調用運行時異常...

  • 解析XML文檔大於2GB,你需要切換到VTD-XML的可與標準VTD-XML綁定一個單獨的API的擴展版...

  • 沒有與VTD-XML的分佈捆綁例子你可能想先看看...這裏是關於這個問題的文章 http://www.codeproject.com/Articles/24663/Index-XML-Documents-with-VTD-XML