Я столкнулся с проблемой при использовании log4net. Следующее приложение было запущено в Windows 7 и Windows 10. Существует значительная разница в производительности. Это было опробовано на нескольких машинах с Windows 10 с похожим результатом.
Версия Log4net: 2.0.8.0
Windows 7: 6 секунд
Windows 10: 2 минуты и 17 секунд
Информация о Windows 10: Версия 1809. Сборка ОС: 17763.253 (эта сборка уже исправлена: KB4058258 (сборка ОС 16299.214) ).
.NET версия: 4.6.1
test.log4net.config
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="c:\temp\myLog.log" />
<appendToFile value="false" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
</layout>
</appender>
<root>
<level value="All" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
Program.cs
using log4net;
using log4net.Config;
using System;
using System.Diagnostics;
using System.IO;
namespace ConsoleAppPerfTest
{
public class Program
{
static void Main(string[] args)
{
XmlConfigurator.ConfigureAndWatch(new FileInfo("test.log4net.config"));
var t = new Test();
var sw = new Stopwatch();
sw.Start();
t.RunTest();
sw.Stop();
Console.WriteLine("Elapsed Minutes: {0}", sw.Elapsed.TotalMinutes);
Console.ReadLine();
}
}
public class Test
{
private readonly ILog _log = LogManager.GetLogger(typeof(Test));
public void RunTest()
{
for (int i = 0; i < 22000; i++)
{
_log.DebugFormat("test logging something: {0}", i);
}
}
}
}
По какой-то причине, когда вы удаляете эту строку из test.log4net.config
, производительность в Windows 10 работает так же быстро, если не быстрее, чем в Windows 7:
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />