[英]Regarding performance issues for usage of memory stream in c#
我创建了一个项目。 很多人一次会使用我的项目。 如果有人出错,它将通过使用内存流创建对象来写入文件。 如果每个人都出错,那么将创建该数量的对象,并且所有对象一次都将错误写入同一文件。 这有什么问题和性能问题吗?
内存流只是字节数组周围的Stream接口。
因此,这实际上非常快。
但是整个字节数组都保留在内存中,所以可能由于内存分配过多而导致性能问题。
您是否真的会遇到问题取决于“多人”有多大,以及内存流中的数据量。
如果用“许多人”写入同一文件,也要注意锁定问题。
想到文件锁定/争用。 您不能创建日志目录,并让所有日志写入都创建自己的文件吗? 另外,也可以使用.NET跟踪功能或类似log4net,Common.Logging,dotTrace之类的日志记录框架来为您消除这些问题。
访问日志文件时,共享流并在其周围使用锁。 请记住在退出时关闭流。
static Object _locker = new Object;
static FileStream fs = new FileStream(...);
// your code
lock(_locker)
{
fs.Write(...) // write to stream
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.