2016-02-04 39 views
1

我想爲vtd-xml實現一個簡單的包裝。由於這個包裝器允許隨機訪問,我選擇使用VTDNav.cloneNav來允許包裝器同時保存和遍歷遊標到XML的不同部分。我的問題是:Object.equals兩個VTDNav實例和VTDNav.cloneNav的代價

  1. 我知道克隆VTDNav實例將會有性能損失,但一般來說,我們在這裏討論的是多少?一旦我完成了包裝,我可能會做一些基準測試,但也許一些關於成本的信息可能會讓我改變一些設計決策(也許只使用一個VTDNav並且只根據請求克隆)。
  2. 如何比較VTDNav的兩個克隆實例並查看它們是否指向同一個節點?我注意到BookMark類有一個equals和deepEquals方法,但我不想在不需要的時候引入更多的類,更多的對象實例和更多的引用。我可以簡單地比較兩個實例的當前索引嗎?

回答

1

見下面我的答案:

  1. 一般來說,克隆()進行分配,並以最典型的用例複製的約30〜40整數int數組大小的開銷...所以除非你正在使用的文件是非常小的,這應該不是什麼大問題...

  2. 是的,比較當前的索引作品!

+0

謝謝!我已經實施了AutoPilot reusage的初始版本,性能結果非常好!幾乎到了這樣的程度,我不認爲它可以在這樣的速度和內存使用情況下正常運行:)我必須說,我對爲什麼這個庫不是更多使用和更知名的問題感到困惑。祝你今後順利通過,這真是太棒了! – buftlica

+0

我喜歡這樣一個事實,即您已經深入瞭解代碼以理解實現,比如bookMark,vtd-xml背後的概念非常簡單,它的工作原理可以用一句話來概括:避免創建對象。 –

+0

@ buftlica--一個問題:你看過vtd-xml的索引功能並嘗試將它用於你的用例嗎? –