dotTraceの機能

dotTraceは、Visual Studio / JetBrains Riderから直接起動できる .NETアプリケーションのパフォーマンスプロファイラで、パフォーマンスのボトルネックを検出し分析できる素晴らしいツールです。 詳細については以下を読み進めてください。

サポートされているアプリケーションタイプの例

あらゆるタイプの.NETアプリケーションをプロファイリング

dotTraceは、デスクトップアプリケーション、.NET Core、IISまたはIIS Express WebサーバーでホストされるASP.NETアプリケーション、MonoアプリケーションとUnityアプリケーション、WCFサービス、Windowsサービス、Universal Windows Platformアプリケーション、およびユニットテストなど、さまざまな.NETアプリケーションのパフォーマンスボトルネックを特定するのに役立ちます。

Windows、 Mac、およびLinuxで利用可能

Windows、 Mac、およびLinuxで利用可能

dotTraceは、.NET Framework 1.0 – 4.7、.NET Core 1.0 – 3.0、Mono 5.10以降、Unity 2018.3以降をターゲットとしたプロジェクトをサポートします。 macOSとLinuxのdotTraceはJetBrains Riderの一部、またはコマンドラインプロファイラとしてのみ使用できます。

タイムライン、サンプリング、トレーシング、ライン毎のdotTraceプロファイルモード

タイムラインおよびその他のプロファイルモード

メソッド呼び出しの実行時間しか測定できない「古典的な」パフォーマンスプロファイリングとは異なり、timelineプロファイリングでは、呼び出しがどのように時間分布しているかが分かります。

メソッド呼び出しデータをタイムラインにバインドすることで、このプロファイルモードでは単に最も遅いメソッドを検出するだけでなく、イベントの順序にかかわるパフォーマンス問題 、例えばUIのフリーズ、過度のガベージコレクション、ワークロードの偏り、非効率的なファイルI/Oなどを診断できます。

ただし、dotTraceでは従来のプロファイルモードも使用できます。 Samplingプロファイリングは、アプリケーション全体のパフォーマンスを評価する最も簡単な方法ですが、tracing及びline-by-lineプロファイリングモードは、特定のアルゴリズムが内部でどのように動作するかの詳細が必要な場合に最適です。

タイムラインプロファイリングの動作

新しいプロファイリング体験

フィルタ、呼び出しツリー、または図を使用して、プロファイルデータを細分化できます。 フィルタを適用すると、特定の条件で指定された時間間隔のセットが得られます。 この機能は、必要なデータを正確に取得するためにデータベースでクエリを実行するのと非常によく似ています。

たとえば、UIのフリーズがガベージコレクションのブロックによって発生したかどうかを調べるには、UIのフリーズが発生してGCのブロックが実行されたメインスレッド上のすべての時間間隔を選択するようにdotTraceに指示できます。 複雑に聞こえるかもしれませんが、このフィルタの組み合わせは実際には2回のクリックで切り替えられます。

Visual Studioに統合されたタイムラインビューア メソッド宣言への移動

Visual Studio / Riderとの緊密な統合

dotTraceはVisual StudioやJetBrains Riderと緊密に統合されており、IDEから離れることなく現在開発中のアプリケーションのプロファイリングを開始することができます。 さらに、IDEでタイムラインのプロファイリング結果を表示して分析することができます。 コールツリーでホットスポットとなっている呼び出しが見つかりましたか? すぐにメソッド宣言に移動しましょう!

Visual Studio / JetBrains Riderの統合により、IDEとプロファイラを切り替える必要がなくなったため、プロファイリング操作がほぼシームレスになりました。

非同期呼び出しのプロファイリング

非同期呼び出しのプロファイリング

dotTraceでは、非同期コードを簡単に分析できます。すべてのasync呼び出し部分はすべて一箇所に表示されるため、さまざまなコールスタックを検索する必要はありません。

Visual Studioで静的メソッドをプロファイリング

静的メソッドのプロファイリング

dotTraceを使用すると、コード内の静的メソッドをすぐにプロファイリングできます。 メソッドにキャレットを置き、Alt+Enterキーを押してアクションリストでDebug | Profileを選択します。

この機能で何ができるかをご想像ください。 コードを書いた直後から、そのコードの任意の部分でプロファイリングすることができるのです! ソリューションをビルドしたり、プロファイラで実行したり、新しいコードを実行するシナリオを設定したりする必要はありません。

リモートコンピュータでのプロファイリング実行

リモートアプリケーションのプロファイリング

ほとんどの場合、ローカルで実行しているアプリケーションをプロファイリングする必要があります。 しかし、リモートWebサーバーでアプリケーションの遅延に直面した場合はどうすればよいでしょうか。

dotTraceは、リモートマシンに接続して、スタンドアロンアプリケーション、Webアプリケーション、またはWindowsサービスをプロファイリングできます。 そこにdotTraceをインストールする必要はありません。単にいくつかのファイルをコピーするだけで結構です。

実行中のプロセスへのプロファイラーのアタッチ

実行中のアプリケーションへの接続

dotTraceは、実行中のアプリケーションにプロファイリングのために接続したり、プロファイリングデータ取得後に切り離したりできます。

これにより、プロファイラでアプリケーションを実行することによるオーバーヘッドを最小限に抑えることができます。 さらに重要なのは、プロファイリングが必要になるたびにアプリケーションを再起動することができない、本番環境におけるパフォーマンスの問題を調査できることです。

ユニットテストのプロファイリング

ユニットテストのプロファイリング

Visual Studio + ReSharper*バンドルまたはJetBrains Rider**をお持ちの場合は、コードエディタまたはユニットテストランナーから簡単にユニットテストのプロファイリングを開始できます。

* ReSharperをインストールしていなくても、NUnitやMSTest、xUnitで提供されているネイティブのユニットテストランナーをプロファイリングすることは可能です。

** プロファイリング機能は、「ReSharper Ultimate + Rider」または「All Products Pack」のライセンス所有者のみが使用できます。

受信HTTPリクエストの分析

遅いHTTPリクエストの分析

タイムラインプロファイリングのスナップショットを分析するときに、Webアプリケーションが受信HTTP要求を処理している時間間隔を除外することができます。 正確なデータを取得し、正確な根本原因を特定し、実行速度の遅いメソッドに照準を合わせてください。 タイムラインプロファイリングを使用して、Webアプリケーションを高速化してください。

SQLクエリの分析

遅いSQLクエリの分析

タイムラインプロファイリングを使用して、各クエリーがアプリケーションのパフォーマンスに与える影響を分析してください。 SQL Queriesフィルタでは、すべてのSQLクエリおよびSQLコネクションがパフォーマンス統計とともに表示されます。

必要に応じて、クエリの内容を別のウィンドウで開いてさらに分析することができます。 1つまたは複数のクエリーを選択し、それらが実行されたメソッドを調査することで、すべてのデータをフィルタできます。

効果のないSQLクエリはもうありません!

dotTraceプロファイリングAPIの使用

Profiling SDK

Profiling SDKを使用すると、プログラムによるプロファイリングデータの収集開始・停止、収集したスナップショットの保存など、コードからプロファイリングセッションを制御できます。

これにより、2つの有用な使用シナリオが可能になります。 まず、SDKを使用してプロファイリングの範囲を絞り込み、コードのどの部分をプロファイリングするかを選択します。 次の使用シナリオは、自己プロファイリング・アプリケーションです。具体的には、アプリケーションがエンドユーザーのマシン上でどのように動作しているかを示す統計情報を収集することができます。

プロファイラーでユニットテストのビルドステップを実行

継続的インテグレーションのサポート

dotTrace には、継続的インテグレーションのビルドをプロファイリングする場合に必要不可欠な、プロファイリングスナップショットの収集を自動化するコマンドラインのプロファイリングツールが付属しています。

JetBrainsのTeamCityをCIサーバーとして使用している場合は、TeamCityのdotTraceプラグインをインストールするようにしてください。 このプラグインを使用すると、統合テストをプロファイリングしてアプリケーションのパフォーマンス劣化を防ぐことができます。 テスト実行時間のしきい値を設定しておけば、そのしきい値を超過した場合、プラグインが自動的にパフォーマンスのスナップショットを取得し、テストを不合格にします。

即時予測(時間調整)

パフォーマンス向上の予測

実行時間の長い関数を長時間かけて最適化した後、最適化が有効に働くかどうかを確認するため、場合によっては開発者が最初からプロファイリングを実施する必要があります。

dotTraceではこのような問題はありません。 プロファイラは、設定した時間調整に基づいて、スナップショット内のすべての関数のタイミングを即座に再計算することができます。アプリケーションの再プロファイリングを行う必要はありません。 1つの関数や、あるクラスのすべての関数の実行時間を設定するだけで、「この関数を40%最適化するとどうなるか?」をプロファイラに尋ねることができます。 スナップショット全体の実行時間は再計算されます。

スナップショットの比較

スナップショットの比較

dotTrace は、1つのアプリケーションの2つのパフォーマンススナップショット同士を比較することができます。 各関数の呼び出し回数と実行時間の差を示す比較スナップショットが生成されます。 比較スナップショットは、通常のパフォーマンススナップショットと同じ方法で表示や分析ができます。

dotTraceのダウンロード

10日間実際使用の無料トライル