我们正在读取大量文件到memorystream中,并在代码中的多个位置重复使用它们。 想知道获取文件的byte []是否是一个更好的主意,并将它们存储在散列表中用于这种情况。这样我们就可以在完成时关闭内存流,并在需要时从哈希表中重新创建一个。只是想知道这种方法是否有任何缺点。 感谢 ň散列表中的Cache byte []与MemoryStreams
0
A
回答
1
使用byte[]
而不是MemoryStream
的一个优点是MemoryStream
有更多的状态 - 它有一个游标。特别是,两个线程可以很容易地从相同的字节数组中读取(复制他们感兴趣的部分等),而如果他们试图同时使用Stream.Read
,他们可能不会获得预期的结果。
这两个不利的一面是,他们可变:(
0
,如果有这种方法什么缺点只是想知道。
对于巨大文件? “巨大”有多大?你可以使用多少内存?
+0
现在我们处理100 MB,200 MB。 – 2010-02-11 12:16:13
0
如果文件是真的那么大,那么你最好不要让他们在内存中的首位。相反,你应该在需要时读取它们,以减少内存使用量。
相关问题
- 1. C#散列表与C++散列表
- 2. C#GZipStream - 压缩MemoryStreams
- 3. 处置MemoryStreams和GZipStreams
- 4. 列表的byte []的一个大的byte []
- 5. 散列与SHA256
- 6. Java SHA-1散列无符号BYTE
- 7. 获取的byte []从列表<Byte>
- 8. 散列表和散列表
- 9. UpdateModel与字典/散列表
- 10. 散列表与动态值
- 11. 散列与四郎
- 12. 队列<byte>与流
- 13. C++中的散列表?
- 14. 散列表中的链接列表
- 15. WCF中的字典发回散列表
- 16. 散列表的JTable?
- 17. 散列表与arraylist并创建新的阵列列表
- 18. Cache中的序列ORACLE
- 19. 在java1.4中模拟列表<byte[]>
- 20. 如何映射散列键与c#中的值列表?
- 21. SHA-512散列中的ColdFusion
- 22. CryptoServiceProvider散列输出与在线散列生成器不匹配?
- 23. C + + 17中的std :: byte与C#中的byte相当吗?
- 24. WCF Cache与Page.Cache
- 25. Java - 如何遍历散列表列表的散列图
- 26. 为什么不能在散列表中存储散列表?
- 27. 插入密钥(Guava Cache)时自定义等号/散列
- 28. TCP服务器和MemoryStreams/ByteArrays
- 29. 如何与散列和范围表
- 30. Perl正则表达式散列与/ e
是否有任何优势从byte []转换为base64string并缓存它,而不是字节[]。 – 2010-02-11 12:50:29
@np:我猜的是不可变性,但这是我能想到的。如果你想避免stompage,最好缓存字节数组并给拷贝给调用者。 – 2010-02-11 13:44:11