【发布时间】:2013-08-30 03:57:36
【问题描述】:
我有一个有 4 个线程的应用程序。每个线程实际上是一个 Timer 并在特定的时间间隔内执行单独的工作。
这些线程使用Console.Writeline 显示它们的日志。
性能在此应用程序中非常重要。我想知道删除Console.Writeline 是否会调整此应用程序的性能?
【问题讨论】:
-
每一个未执行的代码都会提高性能。它是否重要是另一个问题——如果没有更多细节就无法回答。比如你的定时器在哪个时间间隔内触发,它们实际做了哪些其他工作(这可能会使
Console.WriteLine语句完全相形见绌),以及它们已经被其他代码(隐式)同步了多少。 -
其实是为了监控而不是调试
-
看看控制台如何成为四个线程之间的共享资源,每当一个线程写入它时,其他线程将不得不等到它完成。 (除了 IO 的影响之外。)也就是说,这在很大程度上取决于您记录错误消息的频率与花在有用处的时间成正比。
-
轶事地说,我已经看到 log4net 语句在分析器日志中显示为有些重要。我可以看到 Console.Writeline 是相似的。具体来说,如果将
string.Format(....)放在 Writeline 语句中,使用可能会开始变得很重要。 -
@Pooya 这些都不适用于您的情况,因为视情况而定。就像,如果你记录了很多东西,并且不能记录更少的东西,那么尝试一个记录较少废话但需要吞吐量超过记录准确性的人建议的解决方案实际上是一个糟糕的主意。如果您记录静态输出或大量使用
string.Format(),也会有所不同,因为负载在 CPU 和 IO 之间转移。
标签: c# multithreading