SharpLsp で VS Code の C# アプリをプロファイリング:ホットな行の CPU ヒート、最もホットな関数、リークする static な Dictionary の発見と修正
文字起こし
これは Storefront、いま実際に動いている C# アプリです。SharpLsp は再起動なしでアタッチし、時間がどこに使われているかをサンプリングします。
プロファイラーを止めると、エディターの中でホットな行がすべて光ります。カタログの解析、割引のループ、そして文字列をひとつずつ連結して作る請求書。
結果には最もホットな関数と最もホットな行が並ぶので、どこから手を付ければいいかがすぐわかります。
次は同じアプリのメモリを追跡します。SharpLsp が 10 秒ごとにヒープのスナップショットを取ります。
疑いは一貫した増加の度合いで並びます。CustomerSession は、それが保持するバイト配列とともに、どのスナップショットでも増えています。クリックすると、そのコードへジャンプします。
では、何がそれらのセッションを生かし続けているのでしょうか?
グラフに名前が示された static な Dictionary が、アプリがこれまでに扱ったすべてのセッションを保持しています。
修正は、直近 1,000 件の注文だけを残し、残りを追い出すことです。
再ビルドして、もう一度実行し、メモリを追跡します。
今度はヒープが横ばいです。これが C# と F# のための SharpLsp プロファイラーです。無料で、オープンソースです。