Hiệu suất System.Diagnostics.StackFrame giảm trong Windows 10

Nếu sau khi nâng cấp lên Windows 10 hoặc .NET Framework 4.7.1 và bạn nhận thấy hiệu suất giảm đáng kể khi chạy các ứng dụng .NET Framework sử dụng lớp System.Diagnostics.StackFrame , thì bài đăng này có thể bạn quan tâm. Chúng tôi sẽ xem xét nguyên nhân và sau đó đưa ra các bản sửa lỗi đã biết cho lỗi.

Hiệu suất System.Diagnostics.StackFrame giảm sút

Hiệu suất System.Diagnostics.StackFrame giảm sút

Ứng dụng có hiệu suất chấp nhận được chạy trên .NET Framework 4.7 hoặc các phiên bản cũ hơn thực thi chậm hơn khi chạy trên .NET Framework 4.7.1 . Các ứng dụng thường dựa vào StackFrame khi chúng đưa ra các ngoại lệ .NET. Nếu điều này xảy ra với tốc độ cao (hơn 10 sự cố mỗi giây), các ứng dụng có thể chậm lại đáng kể (gấp mười lần) và chạy chậm hơn đáng kể so với trước đây.

Nguyên nhân do hiệu suất của System.Diagnostics.StackFrame giảm sút(Cause of the System.Diagnostics.StackFrame performance degrade)

.NET Framework 4.7.1 trong Windows 10(Windows 10) đã bổ sung hỗ trợ để phát hiện và phân tích cú pháp định dạng tệp Portable PDB để hiển thị thông tin tệp và số dòng trong dấu vết ngăn xếp. Là một phần của thay đổi này, mỗi chức năng trong một dấu vết ngăn xếp được kiểm tra mô-đun xác định của nó để xác định xem mô-đun đó có sử dụng định dạng Portable PDB hay không . Do(Due) một số khác biệt trong chính sách bộ nhớ đệm nội bộ, thời gian chạy dành nhiều thời gian hơn để tìm kiếm các PDB di động(Portable PDBs) so với các phiên bản .NET Framework trước đó dành cho việc tìm kiếm các PDB cổ điển của Windows(Windows PDBs) .

Điều này khiến dấu vết ngăn xếp được định dạng được tạo chậm hơn trước.

Vấn đề này không thay đổi số lượng ngoại lệ được ném ra. Tuy nhiên, nó làm giảm đáng kể khả năng của các ứng dụng để xử lý những trường hợp ngoại lệ đó.

Các ứng dụng sử dụng thư viện IKVM được biết là sẽ bị ảnh hưởng bởi sự cố này nếu chúng thăm dò các tập hợp. Việc dò tìm các tổ hợp được biết là nguyên nhân dẫn đến các trường hợp ngoại lệ.

(Fix System.Diagnostics.StackFrame)Khắc phục sự cố làm giảm hiệu suất System.Diagnostics.StackFrame

Để giải quyết vấn đề này, Microsoft khuyên bạn nên sử dụng một trong các phương pháp sau.

1] Sử dụng một hàm tạo khác cho StackFrame nhận đối số Boolean(1] Use a different constructor for StackFrame that takes a Boolean argument)

Đây là giải pháp được ưu tiên.

Nếu các nhà phát triển ứng dụng có thể thực hiện các thay đổi đối với ứng dụng của họ, hãy gọi (call the) System.Diagnostics.StackTrace. Hàm tạo #ctor ( Boolean ) bằng cách sử dụng một đối số sai để tránh thu thập thông tin nguồn. Điều này tránh phần mã trong đó hiệu suất bị giảm.

2] Khôi phục hoặc nâng cấp lên phiên bản Windows 10 mới nhất(2]  Rollback or upgrade to the latest Windows 10 version)

Trong phương pháp này, hãy quay lại phiên bản / bản dựng trước đó hoặc upgrade to the latest version/build  của Windows 10 nếu bạn đang gặp sự cố này và hiện bạn không chạy phiên bản Windows 10 mới nhất . Đồng thời gỡ cài đặt .NET Framework 4.7.1 nếu có, khỏi máy tính của bạn, sau đó tải xuống(download) và cài đặt phiên bản trước hoặc phiên bản mới nhất của .NET Framework .

Hope this helps!



About the author

Tôi là một chuyên gia Windows 10 được đề xuất với hơn 10 năm kinh nghiệm trong ngành phần mềm. Tôi có kiến ​​thức chuyên môn về cả Explorer và Office 365, đồng thời tôi đặc biệt có kỹ năng trong việc cá nhân hóa và tùy chọn giao diện cho người dùng của mình. Kỹ năng của tôi là trọng tâm của công việc kinh doanh của tôi, đó là cung cấp dịch vụ khách hàng tuyệt vời thông qua các bài đánh giá trực tuyến và tận dụng các công nghệ như AI để cải thiện hỗ trợ.



Related posts