【发布时间】:2012-07-24 09:06:45
【问题描述】:
我每天都会写很多日志(每天数百万个字符串,最多 1 Gb 的日志)。我感兴趣的是,当我设置AutoFlush 时,我会显着降低计算机速度或“损坏”硬盘(如果这很重要,则为 SaS 15000)?每次写入新行时,HDD 会做一些昂贵的额外操作(如打开文件、修改关闭等)
很可能我不应该使用AutoFlush,但有时我想用它来解决其他问题。
【问题讨论】:
标签: c#
我每天都会写很多日志(每天数百万个字符串,最多 1 Gb 的日志)。我感兴趣的是,当我设置AutoFlush 时,我会显着降低计算机速度或“损坏”硬盘(如果这很重要,则为 SaS 15000)?每次写入新行时,HDD 会做一些昂贵的额外操作(如打开文件、修改关闭等)
很可能我不应该使用AutoFlush,但有时我想用它来解决其他问题。
【问题讨论】:
标签: c#
我不确定谁对你的问题投了反对票或为什么(但我可以猜到)。
根据http://msdn.microsoft.com/en-us/library/system.io.streamwriter.autoflush.aspx,使用AutoFlush 肯定会减慢您的代码速度。您需要进行一些测试以确定它会减慢多少,以及获取日志消息是否值得。
如果我是你,我会认真审查日志记录 - 你真的每天都需要这么多数据吗?我的猜测是,如果您可以消除大部分(如果不是全部),您的程序的性能将会显着提高。
如果由于某种原因您无法消除日志记录,请查看一些日志记录库,例如 log4net 或 Enterprise Logging。有关更多信息,请参阅How to do logging in c#?。这些库是由那些花费太多时间的人编写并进行了彻底的性能测试的;与本地代码相比,该库不太可能包含错误或瓶颈。
【讨论】: