Console.Writeline对性能的影响

Poo*_*ani 10 c# multithreading

我有一个有4个线程的应用程序.每个线程实际上都是一个Timer,并在特定的时间间隔内完成单独的工作.这些线程通过使用显示其日志Console.Writeline.性能在此应用程序中非常重要.我想知道删除是否Console.Writeline会调整此应用程序的性能?

Cod*_*eld 8

是的,执行Console.WriteLine需要一段可测量的时间.

删除Console.WriteLine调用或将其更改为写入数据的缓冲后台线程将真正加速应用程序.

但是,您的milage可能会因使用的操作系统而异.


Pao*_*lla 8

Console.WriteLine在性能方面可能存在两个问题:

  1. IO通常不是"快速"操作.

  2. 对WriteLine的调用是同步的,即如果两个线程想要写入,则其中一个线程在WriteLine上阻塞,等待另一个完成写入.从控制台上的MSDN:

使用这些流的I/O操作是同步的,这意味着多个线程可以读取或写入流.

也就是说,了解在Console.WriteLine上花费的时间是否对特定应用程序的性能产生影响的唯一方法就是分析它.否则就是过早优化.


Jer*_*gen 6

如果是出于调试目的,您应该使用:Debug.WriteLine(..),因为这些不包含在发行版本中。

  • 我不明白这如何回答OP的问题。您可能还想从应用程序的发布版本收集日志输出,无论如何,日志记录的目的是什么并不重要。 (2认同)