簡體   English   中英

我應該在 Android 應用程序上從緩沖讀取更改為內存/標記化以讀取 100,000 行文件嗎?

[英]Should I change from buffered read to in-memory/tokenize on Android app for reading a 100,000 line file?

目前,我正在使用緩沖讀取將包含 100,000 行的文本文件加載到 SortedMap 中。 我是否應該放棄這種方法,而是將整個文件加載到 memory 中,然后通過換行將標記化到 SortedMap 中? 請注意,我必須解析每一行以提取密鑰並創建一個支持 object 的每個密鑰,然后將其插入到 SortedMap 中。 該文件的大小小於 4MB,因此符合 Android 的內存文件大小限制。 我想知道是否值得努力切換到內存方法,或者獲得的加速是否不值得。

另外,HashMap 會比 SortedMap 快很多嗎? 我只需要逐鍵查找,如果有必要,我可以在沒有排序鍵的情況下生存,但如果有的話會很好。 如果有比我使用的結構更好的結構,請告訴我,如果您有任何與此問題相關的 Android 速度提示,請也提及這些。

——羅施勒

我不清楚為什么將整個文件加載到 memory 然后標記化會更簡單。 一次讀取一行並以這種方式解析它非常簡單,不是嗎? 雖然當它真正讓事情變得更簡單時,我完全願意一次加載所有東西,但我看不出它在這里會容易得多。

至於SortedMapHashMap - 如果您沒有很多 hash 沖突,則通常HashMap查找是 O(1),但如果有一個SortedMap僅查找等於 nlog。 與 object model 中的 hash 計算相比,比較的成本是多少? 使用 100,000 個元素,每次查找將進行大約 16-17 次比較。 最終,我不想猜測哪個會更快 - 你應該測試它,就像所有性能選項一樣。 看看 memory 的用法...我希望SortedMap使用更少的 memory,但我很容易錯了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM