我已經構建了一個具有大約180,000個字的字典中約400,000個節點的Trie。問題在於,我的手機上建立的時間太長。將Trie編碼爲一個文件以避免重建
所以我決定創建一次trie並將其以某種格式存儲到磁盤,以便在需要時進行快速重新創建。但我無法想出一個好的格式來存儲它。
什麼是編碼trie最有效的格式,以便它可以儘快從文件重建?
我已經構建了一個具有大約180,000個字的字典中約400,000個節點的Trie。問題在於,我的手機上建立的時間太長。將Trie編碼爲一個文件以避免重建
所以我決定創建一次trie並將其以某種格式存儲到磁盤,以便在需要時進行快速重新創建。但我無法想出一個好的格式來存儲它。
什麼是編碼trie最有效的格式,以便它可以儘快從文件重建?
如果你的Trie數據結構實現了可串行化,那麼寫入文件和從文件寫入應該是相當直接的。 Java將負責文件表示。
請參閱link。
也許是個好主意 - 在位置無關的代碼中試圖保存在內存緩衝區中,並通過mmap()將它讀入內存。這大多是使用「冷啓動」中的trie工作的快速方式。
另外,也許你可以保持數據不在嘗試,但在哈希表。通過這種方法,你可以只在內存中保留「桶索引」,這是非常小的。並且,當從文件計算hash-pread()桶到內存中時,並在加載的部分中搜索。
哇。我不能相信我昨天剛剛學習了Serializable Java類 - 而且我沒有想到要使用它。謝謝,我會試試看! – Bruce
嗨,它的工作原理,但它真的很慢。我沒有使用任何覆蓋來實現我自己的序列化 - 所以我不確定它是否可以做得更快。我爲此發佈了一個新問題。 – Bruce
順便說一句,這有幫助,upvoted! – Bruce