Недавно я перешел свой сервис с .net 4.7.2 на .net 8 и заметил, что производительность памяти ухудшилась. Один подозрительный класс включает в себя создание таблицы, основанной на таймере.public static void Main()
{
const int iterations = 100;
double totalManaged = 0;
double totalAll = 0;
var array = new Timer[100];
for (long i = 0; i < iterations; i++)
{
long totalBefore = Process.GetCurrentProcess().PrivateMemorySize64;
long before = GC.GetTotalMemory(true);
var time = new Timer(state => Console.WriteLine("Timer callback executed."), null, TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(2));
array = time;
long after = GC.GetTotalMemory(true);
long totalAfter = Process.GetCurrentProcess().PrivateMemorySize64;
totalManaged += (after - before) / 1024.0;
totalAll += (totalAfter - totalBefore) / 1024.0;
}
Console.WriteLine("Average memory used: {0} KB", totalManaged / iterations);
Console.WriteLine("Average total memory used (managed + unmanaged): {0} KB", totalAll / iterations);
}
< /code>
Результаты: < /p>
.net 8.0 < /p>
Average memory used: 0.23421875 KB
Average total memory used (managed + unmanaged): 99.12 KB
< /code>
.net 4.7.2 < /p>
Average memory used: 0.2678125 KB
Average total memory used (managed + unmanaged): 3.32 KB
Подробнее здесь: https://stackoverflow.com/questions/796 ... e-in-net-8
System.Threading.Timer Performance Performance становится хуже в .NET 8? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение