我有一个应用程序,有4个线程。每个线程实际上都是一个计时器,在特定的时间间隔内执行不同的工作任务。
这些线程使用Console.Writeline
来显示它们的日志。
性能对于这个应用程序非常重要。我想知道是否删除Console.Writeline
将会提高此应用程序的性能。
我有一个应用程序,有4个线程。每个线程实际上都是一个计时器,在特定的时间间隔内执行不同的工作任务。
这些线程使用Console.Writeline
来显示它们的日志。
性能对于这个应用程序非常重要。我想知道是否删除Console.Writeline
将会提高此应用程序的性能。
是的,执行Console.WriteLine需要花费可测量的时间。
移除Console.WriteLine调用或更改为在后台缓冲线程中写入数据可以真正加速应用程序。
但是,这取决于使用的操作系统而有所不同。
关于Console.WriteLine,可能有两个与性能相关的问题:
IO通常不是“快速”的操作。
调用WriteLine是同步的,即如果两个线程想要写入,其中一个会在WriteLine上阻塞,等待另一个完成写入。根据console的MSDN文档:
使用这些流的I/O操作是同步的,这意味着多个线程可以从流中读取或写入。
话虽如此,了解Console.WriteLine花费的时间是否对您特定应用程序的性能产生影响,唯一的方法是进行分析。否则,这是过早优化。
如果是为了调试目的,你应该使用:Debug.WriteLine(..)
,因为这些不会包括在发布版本中。
Console.WriteLine
语句),以及其他代码对其的隐式同步程度。 - Christian.Kstring.Format(....)
放在Writeline语句中使用,可能会开始变得重要。 - chollidastring.Format()
,负载会在CPU和IO之间转移,也会有所不同。 - millimoose