【发布时间】:2012-03-01 21:34:17
【问题描述】:
目前,我们的 C#、.Net 3.5 win 应用程序做了很多 Console.WriteLine() 来保留“软”日志(不保存在文件中),这既不完全有用,也可能有点性能瓶颈,尤其是因为它的目的是尽可能快地进行一堆计算。
我刚加入团队,所以我没有时间分析平均运行时间,但在我看来,必须通过将控制台输出替换为以下内容来改进
- 针对速度进行了优化
- 可在运行时配置,即可开启和关闭
配置很棒,但我不知道通过框架(Log4Net 或其他)切换到同等数量的日志记录是否会提高或降低性能。
我的直觉告诉我,在 Log4Net 中将相同的日志记录到相同的输出可能会稍微慢一些,因为它本质上是在做同样的事情,但必须通过另一个库。这是正确的还是需要一些捷径来加快速度?
我还认为跳过控制台并直接写入日志文件会更快(没有缓冲区刷新等),并且可以保存以供审查/审计/后代使用 - 因此总体而言是最佳选择。
我的想法有意义吗?我可以自信地向团队领导提出建议吗?当然,我可以可靠地测试它的唯一方法是实现它,但我希望我可以用其他人的知识和经验来支持我最初的建议。
【问题讨论】:
-
控制台非常慢。专为人眼而不是记录器而设计。所以是的,轻松获胜。
-
这可能是一个瓶颈?如果您担心性能,您应该做的第一件事是配置文件,而不是猜测可能会慢。
-
@svick 这是非常正确的。但是重复和不必要的控制台 I/O 是导致速度变慢的一个很好的候选,你不觉得吗?
-
@Alex,我的想法并不重要。唯一重要的是您的分析器所说的内容。我认为试图避免不必要的控制台 IO 很可能是过早的优化。
-
@svick 我会记住这个陷阱,先做一些分析,谢谢。
标签: .net performance logging