【发布时间】:2018-04-23 12:59:07
【问题描述】:
使用 NLog 似乎大大降低了我访问类变量的速度。当我按原样运行代码时,s1 比 s2 慢大约 2 倍,这是预期的。但是当我取消注释 GetCurrentClassLogger 行时,s1 变得比 s2 慢 800 倍。我正在使用 .NET Core 2 和 NLog 4.5.3。这是预期的行为吗?是什么导致这种性能下降?感谢您的所有帮助!
class Program
{
//private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
private static readonly DateTime _epoch = new DateTime(1970, 1, 1);
static void Main(string[] args)
{
DateTime epoch = new DateTime(1970, 1, 1);
int count = 10000;
Stopwatch s1 = new Stopwatch();
Stopwatch s2 = new Stopwatch();
s1.Start();
for (int i = 0; i < count; i++)
{
var x = DateTime.UtcNow.Subtract(_epoch).TotalSeconds;
}
s1.Stop();
s2.Start();
for (int i = 0; i < count; i++)
{
var x = DateTime.UtcNow.Subtract(epoch).TotalSeconds;
}
s2.Stop();
Console.WriteLine(s1.ElapsedTicks);
Console.WriteLine(s2.ElapsedTicks);
Console.ReadLine();
}
}
【问题讨论】:
-
我无法重现这一点 - 我对
s1和s2两次都得到大致相同的结果。我正在使用/o+ /debug-从命令行编译和运行它 - 你如何测试它?
标签: c# performance nlog