Windows 10でSystem.Diagnostics.StackFrameのパフォーマンスが低下する原因と対処法
Windows 10または.NET Framework 4.7.1へアップグレードした後、System.Diagnostics.StackFrameクラスを使用する.NET Frameworkアプリケーションの実行時にパフォーマンスが大幅に低下することにお気づきの方は、ぜひこの記事をご覧ください。本記事では、この問題の原因を詳しく解説したうえで、既知の修正方法をご紹介します。
System.Diagnostics.StackFrameのパフォーマンス低下とは
.NET Framework 4.7以前のバージョンでは許容範囲内のパフォーマンスで動作していたアプリケーションが、.NET Framework 4.7.1上では動作が遅くなるという現象が報告されています。アプリケーションは通常、.NET例外をスローする際にStackFrameクラスに依存しています。例外の発生頻度が高い場合(毎秒10件以上)、アプリケーションの動作は大幅に遅くなり(最大10倍)、以前と比べて明らかに重く感じられるようになります。
パフォーマンス低下の原因
Windows 10の.NET Framework 4.7.1では、スタックトレースにファイル名や行番号の情報を表示するために、Portable PDBファイル形式の検出・解析機能が新たに追加されました。この変更に伴い、スタックトレース内の各関数について、その定義モジュールがPortable PDB形式を使用しているかどうかが確認されるようになりました。
ところが、内部キャッシュポリシーの違いにより、ランタイムがPortable PDBの検索に費やす時間が、従来の.NET FrameworkバージョンがクラシックなWindows PDBの検索に費やしていた時間よりも大幅に長くなってしまいました。
その結果、整形されたスタックトレースの生成速度が以前より遅くなっています。
なお、この問題によってスローされる例外の数自体が増えることはありません。ただし、アプリケーションがそれらの例外を処理する能力は大幅に低下します。
特に、IKVMライブラリを使用しているアプリケーションは、アセンブリのプローブ(probing)を行う際にこの問題の影響を受けやすいことが知られています。アセンブリのプローブは例外を発生させる動作のためです。
System.Diagnostics.StackFrameのパフォーマンス低下問題の解決方法
この問題を解決するために、Microsoftは以下のいずれかの方法を推奨しています。
1】Boolean引数を受け取る別のStackFrameコンストラクターを使用する
こちらが推奨される解決策です。
アプリケーション開発者がコードを変更できる場合は、System.Diagnostics.StackTrace.#ctor(Boolean)コンストラクターをfalse引数付きで呼び出し、ソース情報の取得を回避してください。これにより、パフォーマンスが低下するコード部分を通らなくなり、問題を回避できます。
2】Windows 10を以前のバージョンにロールバックするか、最新バージョンにアップグレードする
この問題が発生しており、現在使用しているWindows 10が最新版でない場合は、以前のバージョン/ビルドへロールバックするか、最新のバージョン/ビルドへアップグレードしてください。また、.NET Framework 4.7.1がインストールされている場合は一度アンインストールし、以前のバージョンまたは最新バージョンの.NET Frameworkをダウンロードして再インストールしてください。
この記事がお役に立てば幸いです!
-
Windows 11のパフォーマンスを改善するCCleanerのおすすめ代替ソフト5選
CCleanerはWindows PC向けの優れたクリーニングアプリですが、追加機能が乏しいという課題があります。そのため、多くのユーザーがCCleanerの代替ソフトを探しています。しかし、世の中に選択肢が多すぎて、自分のWindows PCに合った良質なソフトを見つけるのは意外と難しいものです。 PCのパフォーマンスに直接影響するポイントは主に2つあります。1つ目は、不要なジャンクファイルを削除してストレージの空き容量を確保できること(空き容量は動作速度に直結します)。2つ目は、脅威を検出してセキュリティを確保できることです。本記事では、Windows向けCCleaner代替ソフトの中から
-
Advanced System OptimizerでWindowsパソコンのパフォーマンスを改善する方法
記事の要点:パソコンから最高のパフォーマンスを引き出したいなら、適切なメンテナンス方法を知ることが不可欠です。システムをベストな状態で動かすためには、最適化された環境を保つことが何より重要です。本記事では、Advanced System Optimizerを活用してWindows PCのパフォーマンスを向上させる方法をご紹介します。 パソコンが遅くなる原因とは? 「最近パソコンの動きが遅い…」と感じている方に向けて、その原因と対策を分かりやすく解説します。毎日使う方でも、たまにしか使わない方でも、快適にサクサク動くパソコンは誰もが望むところです。新しいパソコンは動作が軽やかですが、時間が経つ