.NET MemoryStream - 我应该设置容量吗?

Dav*_*ton 24 .net memorystream

这可能是一个非常简单的问题,我认为我所追求的是宣布新MemoryStream的最佳实践

以下2个样本有什么区别:

MemoryStream myStream = new MemoryStream(0x10000);

要么

MemoryStream myStream = new MemoryStream();

显然,我知道第一个例子设置了流的初始容量.但是,这两者都具有可自动调整大小的容量.

我有什么理由为什么我应该使用一种方法而不是另一种方法?

iam*_*ael 27

与重新调整内存流大小相关的开销.如果您知道或以其他方式合理猜测需要存储在内存流中的预期大小,您将需要使用该大小作为初始容量.否则,将使用默认大小0,并在添加数据时调整大小.

  • 对于.net 4有趣的事实,使用ILSpy我发现它确实初始大小为0,但是当你写第一个字节时,它将调用最小大小为256的私有函数`EnsureCapacity`.在该初始值之后的每个增长256使当前容量增加一倍. (8认同)

Fel*_*ira 8

老问题我知道,但只是为了记录;

如果您正在处理大量数据(在我的情况下超过1 GB),设置初始容量是使其在可接受的时间段内工作而不会终止服务器的唯一方法.在这种情况下,重新调整大小的开销至关重要.