2010-02-11 20 views
0

我們正在讀取大量文件到memorystream中,並在代碼中的多個位置重複使用它們。 想知道獲取文件的byte []是否是一個更好的主意,並將它們存儲在散列表中用於這種情況。這樣我們就可以在完成時關閉內存流,並在需要時從哈希表中重新創建一個。只是想知道這種方法是否有任何缺點。 感謝 ň散列表中的Cache byte []與MemoryStreams

回答

1

使用byte[]而不是MemoryStream的一個優點是MemoryStream有更多的狀態 - 它有一個遊標。特別是,兩個線程可以很容易地從相同的字節數組中讀取(複製他們感興趣的部分等),而如果他們試圖同時使用Stream.Read,他們可能不會獲得預期的結果。

這兩個不利的一面是,他們可變:(

+0

是否有任何優勢從byte []轉換爲base64string並緩存它,而不是字節[]。 – 2010-02-11 12:50:29

+0

@np:我猜的是不可變性,但這是我能想到的。如果你想避免stompage,最好緩存字節數組並給拷貝給調用者。 – 2010-02-11 13:44:11

0

,如果有這種方法什麼缺點只是想知道。

對於巨大文件? 「巨大」有多大?你可以使用多少內存?

+0

現在我們處理100 MB,200 MB。 – 2010-02-11 12:16:13

0

如果文件是真的那麼大,那麼你最好不要讓他們在內存中的首位。相反,你應該在需要時讀取它們,以減少內存使用量。