我对 C# 很陌生,所以请允许我有些无知:) (我试图四处寻找以了解我所看到的性能差异的原因,但到目前为止还没有明确的答案,所以我想我会问这里的知识渊博的观众......)
基本上......如果我使用streamwriter类似:
public static class Logging
{
readonly static object DebugWriter = new object();
public static void Log(string msg)
{
lock (DebugWriter)
{
using (StreamWriter writer = new StreamWriter("Debug.txt", true))
{
writer.WriteLine(DateTime.UtcNow.ToString("HH:mm:ss.ffff") + " " + msg);
}
}
}
}
然后假设我通过这个类发送大量文本,我会看到 CPU 受到明显影响。但是,如果我改为按照以下方式编写它:
public static class Logging
{
readonly static object DebugWriter = new object();
static StreamWriter lwriter = new StreamWriter("LocalDrivenDebug.txt", true) { AutoFlush = true };
public static void Log(string msg)
{
lock (DebugWriter)
{
lwriter.WriteLine(DateTime.UtcNow.ToString("HH:mm:ss.ffff") + " " + msg);
}
}
}
然后我几乎看不到 CPU 受到任何影响。
上述是否完全通过 using 语句引起的初始化和处置来鞭打 CPU?(如果是这样的话,C# 到底在做什么来吃这么多 CPU ???) - 鉴于它是一个静态类并且我已经强制自动刷新,当然这同样适用于第二个版本,或者它的处理方式会有所不同,因此咀嚼占用更少的 CPU 时间?
我只能假设我遗漏了一些明显的东西。所以希望有人能启发我,因为我“认为”你应该使用 using 语句作为更安全/更方便的处理方式?