Performa System.Diagnostics.StackFrame menurun di Windows 10

Jika setelah Anda memutakhirkan ke Windows 10 atau .NET Framework 4.7.1 , dan Anda melihat penurunan kinerja yang signifikan saat menjalankan aplikasi .NET Framework yang menggunakan kelas System.Diagnostics.StackFrame , maka posting ini mungkin menarik bagi Anda. Kami akan melihat penyebabnya, dan kemudian menawarkan perbaikan yang diketahui untuk kesalahan tersebut.

Performa System.Diagnostics.StackFrame menurun

Performa System.Diagnostics.StackFrame menurun

Aplikasi yang memiliki kinerja yang dapat diterima yang berjalan di .NET Framework 4.7 atau versi yang lebih lama dijalankan lebih lambat saat berjalan di .NET Framework 4.7.1 . Aplikasi biasanya mengandalkan StackFrame ketika mereka melempar pengecualian .NET. Jika ini terjadi pada kecepatan tinggi (lebih dari 10 insiden per detik), aplikasi dapat melambat secara signifikan (sepuluh kali lipat) dan berjalan secara nyata lebih lambat dari sebelumnya.

Penyebab penurunan kinerja System.Diagnostics.StackFrame(Cause of the System.Diagnostics.StackFrame performance degrade)

.NET Framework 4.7.1 di Windows 10 menambahkan dukungan untuk mendeteksi dan menguraikan format file PDB Portabel untuk menampilkan informasi file dan nomor baris dalam pelacakan tumpukan. Sebagai bagian dari perubahan ini, setiap fungsi dalam pelacakan tumpukan memiliki modul penentunya yang diperiksa untuk menentukan apakah modul tersebut menggunakan format PDB Portabel . Karena(Due) beberapa perbedaan dalam kebijakan caching internal, waktu proses menghabiskan lebih banyak waktu untuk mencari PDB Portabel(Portable PDBs) daripada versi .NET Framework sebelumnya yang dihabiskan untuk mencari PDB Windows(Windows PDBs) klasik .

Ini menyebabkan jejak tumpukan yang diformat diproduksi lebih lambat dari sebelumnya.

Masalah ini tidak mengubah jumlah pengecualian yang dilemparkan. Namun, secara signifikan mengurangi kemampuan aplikasi untuk menangani pengecualian tersebut.

Aplikasi yang menggunakan perpustakaan IKVM diketahui terpengaruh oleh masalah ini jika mereka menyelidiki rakitan. Menyelidiki rakitan diketahui menyebabkan pengecualian.

Perbaiki(Fix System.Diagnostics.StackFrame) masalah penurunan kinerja System.Diagnostics.StackFrame

Untuk mengatasi masalah ini, Microsoft merekomendasikan menggunakan salah satu dari metode berikut ini.

1] Gunakan konstruktor berbeda untuk StackFrame yang menggunakan argumen Boolean(1] Use a different constructor for StackFrame that takes a Boolean argument)

Ini adalah solusi yang disukai.

Jika pengembang aplikasi dapat membuat perubahan pada aplikasi mereka, panggil (call the) System.Diagnostics.StackTrace. #ctor( Boolean ) konstruktor dengan menggunakan argumen palsu untuk menghindari menangkap informasi sumber. Ini menghindari bagian kode yang kinerjanya menurun.

2] Kembalikan atau tingkatkan ke versi Windows 10 terbaru(2]  Rollback or upgrade to the latest Windows 10 version)

Dalam metode ini, putar kembali ke versi/build sebelumnya atau upgrade to the latest version/buildWindows 10  terbaru jika Anda mengalami masalah ini dan saat ini Anda tidak menjalankan versi terbaru Windows 10 . Hapus juga .NET Framework 4.7.1 jika ada, dari komputer Anda, lalu unduh(download) dan instal versi sebelumnya atau versi terbaru .NET Framework .

Hope this helps!



About the author

Saya seorang teknisi Windows 10 dan telah membantu individu dan bisnis memanfaatkan sistem operasi baru selama bertahun-tahun. Saya memiliki banyak pengetahuan tentang Microsoft Office, termasuk cara menyesuaikan tampilan dan mempersonalisasi aplikasi untuk pengguna yang berbeda. Selain itu, saya tahu cara menggunakan aplikasi Explorer untuk menjelajahi dan menemukan file dan folder di komputer saya.



Related posts