我真的不想在我的高频交易软件中引入任何延迟,同时我需要每秒存储数千行日志。1 毫秒的延迟会很大,我只同意 0.01-0.05 毫秒的延迟。
*现在*我只是在启动时在内存中分配 500 Mb,将日志存储在那里,当应用程序完成时,我将此日志放在磁盘上。
但是现在我意识到我想要更多的日志,并且在应用程序执行期间我想要它们。所以我现在想在应用程序执行期间存储日志(可能每分钟一次或每 10 分钟一次)。有多慢StreamWriter.WriteLine
?它会比“添加到预先分配的集合”慢吗?
我应该StreamWriter.WriteLine
直接使用(是同步还是异步,AutoFlush
选项会影响性能吗?)。我还可以使用BlockingCollection
将项目添加到日志,然后使用专用线程来处理此阻塞集合并将日志存储在另一个线程中的磁盘上。