2010-02-11 24 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

如果文件是真的那么大,那么你最好不要让他们在内存中的首位。相反,你应该在需要时读取它们,以减少内存使用量。