ナレーション、オリジナル音楽、字幕付き。VS Code で収録した Storefront デモでの C# の一連の流れ:Profile CPU とヒートマップ、Track Memory、リークの疑い、static フィールドをルートとする保持グラフ、修正の入力、そして再実行。早送りの部分は画面上に表示されます。

SharpLsp で VS Code の C# アプリをプロファイリング:ホットな行の CPU ヒート、最もホットな関数、リークする static な Dictionary の発見と修正

ガイドを読む:プロファイラー

文字起こし

これは Storefront、いま実際に動いている C# アプリです。SharpLsp は再起動なしでアタッチし、時間がどこに使われているかをサンプリングします。

プロファイラーを止めると、エディターの中でホットな行がすべて光ります。カタログの解析、割引のループ、そして文字列をひとつずつ連結して作る請求書。

結果には最もホットな関数と最もホットな行が並ぶので、どこから手を付ければいいかがすぐわかります。

次は同じアプリのメモリを追跡します。SharpLsp が 10 秒ごとにヒープのスナップショットを取ります。

疑いは一貫した増加の度合いで並びます。CustomerSession は、それが保持するバイト配列とともに、どのスナップショットでも増えています。クリックすると、そのコードへジャンプします。

では、何がそれらのセッションを生かし続けているのでしょうか?

グラフに名前が示された static な Dictionary が、アプリがこれまでに扱ったすべてのセッションを保持しています。

修正は、直近 1,000 件の注文だけを残し、残りを追い出すことです。

再ビルドして、もう一度実行し、メモリを追跡します。

今度はヒープが横ばいです。これが C# と F# のための SharpLsp プロファイラーです。無料で、オープンソースです。