我创建了一个项目。许多人一次将使用我的项目。 如果有人遇到错误,那么它将通过使用内存流创建对象来写入文件。 如果每个人都有错误,那么将创建该数量的对象,并且所有对象一次都向同一文件写入错误。 这是否有任何问题和性能问题?关于在c#中使用内存流的性能问题
0
A
回答
6
- 使用内存流写入文件似乎没有必要。打开/创建文件并直接写入文件。更好:使用一个库来记录,比如log4net,它将负责同时访问日志文件。记录是一项标准任务,不需要重新发明轮子。
- 如果您担心性能做负载测试并看看是否有实际的是的问题。
1
内存流只是一个字节数组周围的Stream接口。
所以这实际上是非常快的。
但是整个字节数组都保存在内存中,因此可能存在的性能问题是由于内存分配太多。
如果真的会有问题取决于“很多人”的大小以及内存流中的数据量。
如果您使用“许多人”写入同一个文件,也需要注意锁定问题。
1
想到文件锁定/争用。你能否创建一个日志目录并让所有的日志写入创建自己的文件?或者,使用.NET跟踪功能或类似log4net,Common.Logging,dotTrace作为日志框架来为您消除这些问题。
0
在访问日志文件时,使流共享并在其周围使用锁。记得在退出时关闭流。
static Object _locker = new Object;
static FileStream fs = new FileStream(...);
// your code
lock(_locker)
{
fs.Write(...) // write to stream
}
相关问题
- 1. 关于处理大字符串的问题关于内存使用的问题
- 2. 关于XenAPI内存问题
- 3. 关于保存文件的通用机制的性能问题
- 4. 内存流问题
- 5. 有关内联性能的问题
- 6. 关于Big(O)性能的问题
- 7. 关于Web服务的性能问题
- 8. gzip - 关于性能的问题
- 9. 关于修饰符的内存问题
- 10. 关于Java内存模型的问题
- 11. 关于C#中XPathNodeIterator问题的问题#
- 12. 关于在会话中存储用户对象的PHP性能问题
- 13. 关于CImage保存功能的问题
- 14. 关于释放内存/跨平台兼容性的问题
- 15. 关于Java中流的问题
- 16. 关于使用Java编写高性能服务器的问题
- 17. 关于堆栈和堆栈内存使用的问题
- 18. 关于CSS精灵和内存使用的快速问题
- 19. 关于受控组件的内存使用问题
- 20. 关于在CakePHP中缓存的问题
- 21. 关于MySQL数据库性能问题
- 22. 关于Bool在C++中的问题
- 23. 关于setter在objective-c中的问题
- 24. 关于Linux内存类型问题
- 25. 关于内存泄漏问题
- 26. 问题关于内存泄漏
- 27. 问题有关内存使用
- 28. 关于linux内存问题的C++多线程程序
- 29. 关于C++内存分配和删除的问题
- 30. C#关于范围的内存分配/取消分配问题
+1:对于任何种类的(潜在)性能问题,*都不能替代(可重复)测试*。 – Richard 2010-10-05 08:32:32
+1使用库进行日志记录 - 他们已经解决了这个问题,他们经过了充分的测试,并且他们在日志记录中找出了像并发这样的难题 – 2010-10-05 09:05:09