計測 - プロファイラ c#




いくつかの良い.NETプロファイラとは何ですか? (20)

ANTSのメモリプロファイラの最新版(私は5だと思います)は単に揺れる! WinDbgとSOSを使用してリークが発生していたのは、それが以前の最善の方法であることが証明されてからANTSを試したところ、数分で終わりました。 本当に素晴らしいソフトウェアです。

.netプログラムを使用する際にどのプロファイラーを使用しましたか?特に推奨しますか?


ASP.NET MVCを使用している場合は、MVCMiniProfiler(http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)を試すことができます。


SpeedTraceは、アプリケーション内のボトルネックを見つけるのに役立つだけではないので、私にとってはSpeedTraceは市場で最高のツールです。 また、トラブルシューティングのシナリオでも、アプリケーションがクラッシュした理由、セットアップがインストールされなかった理由、アプリケーションがハングアップした場合、データ入力によってはアプリケーションのパフォーマンスが低下することがあります。


dotTraceの メモリとパフォーマンスのトレースセッション を比較する機能は非常に貴重です(ANTSにもメモリの差分機能があるかもしれませんが、パフォーマンスの差分は表示されません)。

バグ修正や機能強化の前後にプロファイリングセッションを実行し、その結果を比較することは、特にパフォーマンスが優先されずボトルネックを見つけることができなかった(私の場合のように)非常に貴重な.NETアプリケーションで非常に貴重です。とても退屈です。 前後の差分を取ることで 、各メソッドの呼び出し回数 変化と各メソッドの期間 変化 を確認できます。

これはコードの変更時だけでなく、クライアント/顧客ごとに異なるデータベースを使用するアプリケーションがある場合にも役立ちます。 ある顧客が遅延を訴えている場合は、そのデータベースを使用してプロファイリングセッションを実行し、その結果を「高速」データベースと比較して、どの操作が遅延の原因となっているかを判断できます。 もちろんデータベースサイドのパフォーマンスツールはたくさんありますが、私はアプリケーションサイドからパフォーマンスメトリクスを見ることを本当に手助けすることがあります(それはユーザーが実際に見ているものに近いからです)。

結論:dotTraceはうまく機能し、差分は非常に貴重です。



パフォーマンスプロファイリングをカバー するものもあります 、メモリプロファイリングに関しては、 現在Scitech .NETメモリプロファイラ3.1とANTSメモリプロファイラ5.1の両方を評価しています(2009年9月現在のバージョン)。 私は1年か2年前にJetBrainsを試してみましたが、ANTSほど良くはありませんでした(メモリプロファイリングのため)ので、今回は気にしませんでした。 Webサイトを読んで みる と、他の2つと同じ メモリプロファイリング 機能を持っていないようです。

ANTSとScitechの両方のメモリプロファイラは他のものが持っていない機能を持っているので、どちらがあなたの好みに依存するでしょう。 一般的に言って、Scitechのものはより詳細な情報を提供しますが、ANTSのものは漏洩物を特定するのに本当に素晴らしいです。 全体的に見て、私はANTSのほうが好きです。リークを特定するのが早いからです。

これが私の経験からの主な長所と短所です。

ANTSとScitech .NETメモリプロファイラの共通機能

  • リアルタイム分析機能
  • Webサイトの優れたハウツービデオ
  • 使いやすい
  • 妥当なパフォーマンス(プロファイラーが接続されていない場合よりも明らかに遅くなりますが、それほど多くはイライラしません)
  • 漏れているオブジェクトのインスタンスを表示する
  • 基本的に彼らは両方ともかなりうまく仕事をします

ANTS

  • イベントハンドラによってのみ生存しているオブジェクト、破棄されているがまだ生きているオブジェクト、破棄されたオブジェクトからの参照によってのみ生存しているオブジェクトなど 、よくあるリーク 見つけるためのワンクリックフィルタ 。 これはおそらくANTSの致命的な機能です - リークの発見はこれのために非常に速いです。 私の経験では、リークの大部分はイベントハンドラのフックが解除されていないことが原因で、ANTSはこれらのオブジェクトに直接アクセスします。 驚くばかり。
  • オブジェクト保持グラフ Scitechでも同じ情報が利用できますが、ANTSで解釈する方がはるかに簡単です。
  • オブジェクト自体のサイズに加えて、子とともにサイズを表示します(ただし、残念ながらインスタンスが選択されている場合のみ、全体のクラスリストでは表示されません)。
  • Visual Studioとのより良い統合(グラフを右クリックしてファイルにジャンプ)

Scitech .NETメモリプロファイラ

  • オブジェクトが割り当てられたときにスタックトレースを表示します。 これは、さまざまな場所に割り当てられているオブジェクトには 本当に 便利です。 ANTSでは、リークしたオブジェクトがどこで作成されたのか正確に判断するのは困難です。
  • 廃棄されなかった使い捨てオブジェクトの数を示します。 リークを示すものではありませんが、ガベージコレクションの高速化の結果として、この問題を解決してアプリケーションのパフォーマンスを向上させることができます。
  • より詳細なフィルタリングオプション(複数の列を個別にフィルタリングできます)。
  • 作成されたオブジェクトの総数に関する情報を表示します(それらのガベージコレクションを含む)。 ANTSは「ライブ」オブジェクト統計のみを表示します。 これにより、アプリケーション全体のパフォーマンスの分析や調整が容易になります(たとえば、不要に作成されたオブジェクトのうち、リークしているとは限らない場所を特定するなど)。

要約すると、ANTSはリークするものをより早く見つけるのに役立ちますが、Scitechはアプリケーション全体のメモリパフォーマンスと個々のオブジェクトについてもう少し詳しく説明します(作成時のスタックトレースなど)。 スタックトレースと配置されていない使い捨てオブジェクトの追跡がANTSに追加されたのなら、他に何も使う必要はないでしょう。



残念ながら、私が試したプロファイラーの大部分はテールコール、特にANTSで使用すると失敗しました。 私は自分のものを書いてしまうだけです。 あなたがベースとして使うことができるCodeProjectの上の簡単な実装があります。


私は this を使って大きなC#アプリにたくさんの問題を見つけました。

通常、プラグインがロードされ、ビッグデータ構造が作成、破棄、シリアル化、または逆シリアル化されているため、起動またはシャットダウン中に問題が発生します。 多くの場合、これらは複数回作成および初期化され、変更ハンドラが複数回追加されるため、さらに問題が複雑になります。

このような場合、プログラムは非常に遅くなり、2つのサンプルだけで有罪のメソッド/関数/プロパティ呼び出しサイトを特定できます。


私は JetBrains dotTrace Redgate ANTSを 広く使っています。 彼らは機能と価格でかなり似ています。 どちらも便利なパフォーマンスプロファイリングと非常に基本的なメモリプロファイリングを提供します。

IDEからワンクリックで単体テストのパフォーマンスをプロファイルできるので、dotTraceはResharperと統合されています。これは本当に便利です。 しかし、dotTraceは誤った結果をもたらすように思われることがよくあります(たとえば、メソッドを実行するのに数年かかったと言うなど)

ANTSがプロファイリング結果を提示する方法が好きです。 それはあなたにソースコードを示しており、そして各行の左側にそれが実行するのに要した時間を教えてくれます。 dotTraceはツリービューです。

EQATECプロファイラー は非常に基本的なもので、EQATECプロファイラーで実行できるようにアセンブリの特別なインストルメント化バージョンをコンパイルする必要があります。 しかし、それは無料です。

全体的に私はパフォーマンスプロファイリングのためにANTSを好むが、もしあなたがResharperを使うのであればdotTraceの統合はキラーな機能であり、それが有用性においてANTSを打つことを意味する。

.NETのメモリプロファイリングに必要なのは、無料のMicrosoft CLR Profiler( .NET Framework 2.0 / .NET Framework 4.0 )だけです。

2011年アップデート

Scitechのメモリプロファイラ はかなり基本的なUIを持っていますが、dotTraceとANTSが欠けているアンマネージメモリに関する情報を含むたくさんの有用な情報を持っています - あなたはCOM相互運用をしているなら役に立つかもしれません診断が容易なメモリの問題 - あなたは通常 windbg.exe ます。

ANTSプロファイラはここ数年で飛躍的な進歩を遂げており、そのメモリプロファイラは私の見積もりではパッケージとしてdotTraceよりも先に進んでいる本当に便利な機能をいくつか備えています。 私は両方のライセンスを持っているのに十分幸運ですが、あなたがパフォーマンスとメモリの両方のために一つの.Netプロファイラーを買おうとしているならば、それをANTSにしてください。


私はWinFormsやConsole Apps用の JetBrains dotTrace を使ってきました(まだASP.netではテストされていません)。

彼らは最近、個人用ライセンスよりもかなり安い "個人用ライセンス"も追加しました。 それでも、他の誰かがもっと安いものや無料のものさえ知っていれば、私も聞きたいのですが:-)


私は、 JetBrains dotTrace Profiler が.NETの優れたプロファイリングツールであることを確認しました。それらのASP.NETモードは高品質です。


私は最近EQATEC Profiler http://www.eqatec.com/tools/profiler 発見しました。 これは、ほとんどの.NETバージョンおよび多数のプラットフォームで機能します。 それは使用が容易であり、商業的使用のためでさえその一部は無料です。


私は最近TelerikのJustTraceをテストしていますが、完成品からは程遠いですが、彼らは正しい方向に向かっています。


素晴らしいscitech .netメモリプロファイラを 忘れないでください

なぜあなたの.netアプリがメモリ不足になっているのかを突き止めるのに最適です。


自分で試したことはありませんが、おそらく dotTrace でしょうか。 彼らのReSharperアプリケーションは確かに良いものです。 たぶんdotTraceもそうです:)


nProf 忘れないでください。


AQTime は合理的ですが、学習曲線が少しあり、Team Suiteに組み込まれているものほど使いやすいものではありません。


ANTSプロファイラー 。 あまり使ったことはありませんが、ANTSについての苦情はありません。 視覚化は本当に役に立ちます。


yourkit javaと.netプロファイラーを追加したいのですが、私はJavaにそれが大好きですが、.NET版は試していません。







profiler