.НЕТ

Система.Диагностика.Производителността на StackFrame се влошава в Windows 10

Система.Диагностика.Производителността на StackFrame се влошава в Windows 10

Ако след надграждане до Windows 10 или .NET Framework 4.7.1 и забелязвате значително намаляване на производителността, когато бягате .NET Framework приложения, които използват Система.Диагностика.StackFrame клас, тогава тази публикация може да ви заинтересува. Ще разгледаме причината и след това ще предложим известни поправки за грешката.

Система.Диагностика.Производителността на StackFrame се влошава

Приложение, което има приемлива производителност на .NET Framework 4.7 или по-стари версии се изпълняват по-бавно, когато се изпълняват на .NET Framework 4.7.1. Приложенията обикновено разчитат на StackFrame, когато хвърлят .NET изключения. Ако това се случи с висока скорост (повече от 10 инцидента в секунда), приложенията могат да забавят значително (десетократно) и да работят значително по-бавно от преди.

Причина за системата.Диагностика.Производителността на StackFrame се влошава

The .NET Framework 4.7.1 в Windows 10 добави поддръжка за откриване и анализиране на преносим PDB файлов формат за показване на информация за номер на файл и ред в следи от стека. Като част от тази промяна, всяка функция в трасирането на стека има проверен дефиниращ модул, за да се определи дали този модул използва преносимия PDB формат. Поради някои разлики във вътрешната политика на кеширане, времето за изпълнение прекарва много повече време в търсене на преносими PDB от предишното .Версиите на NET Framework, прекарани в търсене на класически PDB на Windows.

Това кара форматираните следи от стека да се произвеждат по-бавно от преди.

Този проблем не променя броя на възникналите изключения. Това обаче значително намалява способността на приложенията да се справят с тези изключения.

Известно е, че приложенията, които използват библиотека IKVM, са засегнати от този проблем, ако те търсят сглобки. Известно е, че сондирането на възли причинява изключения.

Fix System.Диагностика.Проблем с влошаване на производителността на StackFrame

За да разреши този проблем, Microsoft препоръчва използването на някой от следните методи.

1] Използвайте различен конструктор за StackFrame, който приема булев аргумент

Това е предпочитаното решение.

Ако разработчиците на приложения могат да правят промени в своите приложения, обадете се на системата.Диагностика.StackTrace.#ctor (булев) конструктор чрез използване на фалшив аргумент, за да се избегне улавяне на информация за източника. Това избягва частта от кода, в която производителността е намалена.

2] Отмяна или надграждане до най-новата версия на Windows 10

В този метод се върнете към предишната версия / компилирайте или надстройте до най-новата версия / компилация на Windows 10, ако имате този проблем и в момента не използвате най-новата версия на Windows 10. Също така деинсталирайте .NET Framework 4.7.1, ако има такъв, от вашия компютър и след това изтеглете и инсталирайте предишна версия или най-новата версия на .NET Framework.

Надявам се това да помогне!

Как да инсталирате League Of Legends на Ubuntu 14.04
Ако сте фен на League of Legends, това е възможност за вас да тествате League of Legends. Имайте предвид, че LOL се поддържа на PlayOnLinux, ако сте п...
Инсталирайте най-новата стратегия за игра OpenRA на Ubuntu Linux
OpenRA е Libre / Free Real Time стратегия за игра, която пресъздава ранните игри на Westwood като класическата Command & Conquer: Red Alert. Разпредел...
Инсталирайте най-новия Dolphin Emulator за Gamecube & Wii на Linux
Dolphin Emulator ви позволява да играете избраните от вас игри Gamecube & Wii на Linux Personal Computers (PC). Като безплатно достъпен и емулатор на...