Windows 10에서 System.Diagnostics.StackFrame 성능 저하

Windows 10 또는 .NET Framework 4.7.1 로 업그레이드한 후 System.Diagnostics.StackFrame 클래스 를 사용하는 .NET Framework 애플리케이션을 실행할 때 성능이 크게 저하되면 이 게시물이 도움이 될 것입니다. 원인을 살펴본 다음 오류에 대해 알려진 수정 사항을 제공합니다.

System.Diagnostics.StackFrame 성능 저하

System.Diagnostics.StackFrame 성능 저하

.NET Framework 4.7 또는 이전 버전에서 실행 중인 허용 가능한 성능을 가진 응용 프로그램은 .NET Framework 4.7.1 에서 실행할 때 더 느리게 실행됩니다 . 응용 프로그램은 일반적으로 .NET 예외를 throw할 때 StackFrame에 의존합니다. 이것이 빠른 속도로(초당 10회 이상) 발생하면 응용 프로그램이 크게(10배) 느려지고 이전보다 눈에 띄게 느려질 수 있습니다.

System.Diagnostics.StackFrame 성능 저하의 원인(Cause of the System.Diagnostics.StackFrame performance degrade)

Windows 10.NET Framework 4.7.1 은 스택 추적에서 파일 및 줄 번호 정보를 표시하기 위해 Portable PDB 파일 형식을 감지하고 구문 분석하는 지원을 추가했습니다 . 이 변경 사항의 일부로 스택 추적의 각 함수는 해당 모듈이 Portable PDB(PDB) 형식 을 사용하는지 확인하기 위해 정의 모듈을 검사 합니다. 내부 캐싱 정책의 몇 가지 차이점 으로 인해(Due) 런타임은 이전 .NET Framework 버전이 클래식 Windows PDB(Windows PDBs) 를 검색하는 데 소비한 것보다 훨씬 더 많은 시간을 Portable PDB(Portable PDBs) 를 검색하는 데 소비 합니다.

이로 인해 형식이 지정된 스택 추적이 이전보다 느리게 생성됩니다.

이 문제는 throw되는 예외 수를 변경하지 않습니다. 그러나 이러한 예외를 처리하는 응용 프로그램의 기능은 크게 감소합니다.

IKVM 라이브러리 를 사용하는 응용 프로그램 은 어셈블리를 검색하는 경우 이 문제의 영향을 받는 것으로 알려져 있습니다. 어셈블리를 검색하면 예외가 발생하는 것으로 알려져 있습니다.

System.Diagnostics.StackFrame(Fix System.Diagnostics.StackFrame) 성능 저하 문제 수정

이 문제를 해결하려면 다음 방법 중 하나를 사용하는 것이 좋습니다 .(Microsoft)

1] 부울 인수를 사용하는 StackFrame에 대해 다른 생성자 사용(1] Use a different constructor for StackFrame that takes a Boolean argument)

이것이 선호되는 솔루션입니다.

응용 프로그램 개발자가 응용 프로그램을 변경할 수 있는 경우 System.Diagnostics.StackTrace 를 (System.Diagnostics.StackTrace.)호출합니다 . (call the) 소스 정보 캡처를 피하기 위해 false 인수를 사용하여 #ctor( Boolean ) 생성자. (Boolean)이렇게 하면 성능이 저하되는 코드 섹션을 피할 수 있습니다.

2] 최신 Windows 10 버전으로 롤백 또는 업그레이드(2]  Rollback or upgrade to the latest Windows 10 version)

이 방법에서 이 문제가 발생하고 현재 최신 버전의 Windows 10 을 실행하지 않는 경우 (Windows 10)이전 버전/빌드로 롤백 하거나 Windows 10 upgrade to the latest version/build  로 업그레이드합니다 . 또한 컴퓨터에서 .NET Framework 4.7.1(있는 경우)을 제거한 다음 .NET Framework(.NET Framework) 의 이전 버전 또는 최신 버전 을 다운로드(download) 하여 설치합니다 .

Hope this helps!



About the author

저는 Edge 경험이 있는 숙련된 Windows 10 및 Windows 11/10 관리자입니다. 저는 이 분야에서 제공할 수 있는 풍부한 지식과 경험을 가지고 있습니다. 그렇기 때문에 제 기술이 귀사에 귀중한 자산이 될 것이라고 생각합니다. Windows 10과 Edge 모두에서 다년간의 경험을 통해 새로운 기술을 빠르게 배우고 문제를 신속하게 해결하며 비즈니스 운영에 대한 책임을 질 수 있습니다. 또한 Windows 10 및 Edge에 대한 경험을 통해 운영 체제의 모든 측면에 대해 매우 잘 알고 있으므로 서버 관리 또는 소프트웨어 응용 프로그램 관리에 도움이 될 것입니다.



Related posts