54

最近、Delphi 4 から Delphi 2009 にアップグレードしました。Delphi 4 では、Primoz Gabrijelcicの GpProfile をプロファイラーとして使用し、Turbo Power の Memory Sleuthをメモリ分析とリークのデバッグに使用していました。どちらも私にとってはうまくいきました。しかし、今は Delphi 2009 で動作する新しいツールが必要です。

Delphi のプロファイリング/分析ツールのリーダーは、明らかにAutomatedQA の AQTimeです。彼らは最近、Atanas Soyanovの Memproof を手に入れました。これは優れた無料のメモリ分析ツールであり、その機能を AQTime に組み込みました。しかし、AQTime は個々のプログラマにとって非常に高価です。実際には、Delphi 2009 へのアップグレードよりも多くの費用がかかります。

私の質問は次のとおりです。現在のバージョンの Delphi でプロファイリングとメモリ分析を行うための、あなたが満足し、推奨している他の安価なオプションはありますか?


補遺: 初期の回答者は、Delphi に既に含まれている FastMM マネージャーがメモリ リークの検出に非常に優れていることを示しているようです。

では、ソース コードのプロファイリングに代わる良い方法はありますか?

私が興味を持っているのは、Michael Adolphによる ProDelphi で、コストは AQTime の 6 分の 1 以下です。使いますか?AQTime は 6 倍の価値がありますか?


補遺 2: AQTime と ProDelphi の両方の試用版をダウンロードしました。

AQTime は少し圧倒され、最初は少し混乱しました。それを接続するために必要ないくつかのトリックを見つけるのに数時間かかりました.

ProDelphi は、私が慣れ親しんでいた GpProfile と非常によく似ていました。しかし、そのウィンドウはごちゃごちゃしていてわかりにくく、GpProfile ほど良くはありません。

私にとって大きな違いは次のとおりです。

  1. ProDelphi はコードを変更します。AQTime はそうではありません。コードを変更すると、何か問題が発生した場合にデータが破損する可能性がありますが、GpProfile での私の経験では、そのようなことは一度もありませんでした。AQTime のプラス 1。

  2. ProDelphi では、最適化をオフにする必要があります。しかし、プロファイリングしたいのは、最適化がオンになっているプログラム、つまりその実行方法です。AQTime のプラス 1。

  3. ProDelphi では、関数またはプロシージャまでプロファイルを作成することしかできません。AQTime は、個々の行に移動できます。AQTime のプラス 2。

  4. ProDelphi には 20 のルーチンをプロファイリングする無料バージョンがあり、そのプロ バージョンの価格は 100 米ドル未満です。AQTime は 600 米ドルです。ProDelphi の場合はプラス 4。

これでスコアは 4-4 になりました。どう思いますか?


補遺 3: Primoz Gabrijelcic は、GpProfile を再び機能させることを計画しています。以下の回答のいくつかに対する彼のコメントを参照してください。彼はGabrとして StackOverflow に参加しています。


補遺 4: 結局、プロファイラーの解決策があるようです。以下で説明する Andre のオープン ソース asmprofilerを参照してください。

4

12 に答える 12

35

価格については、メモリ トラッカーとして FastMM4 に勝るものはありません。使い方は簡単ですが、強力で、Delphi とうまく統合されています。
ダウンロード、インストール、その他の変更を行わずに、次の行を入力するだけであることを知っていると思います

ReportMemoryLeaksOnShutDown := True;

コードの任意の場所で、メモリ リークの基本的なレポートを有効にします。
クラッシュ情報のようなものがさらに必要な場合は、EurekaLog が非常に優れた製品であり、私たちが使用しています。MadExceptも評判がいい…

特にプロファイリングには、AQTime があります。

gpProfile については、更新のために SO でgabrを試してみることができます... または、オープン ソースであるため、自分で gpProfile を更新してください。;-)

于 2008-11-15T02:46:59.237 に答える
33

Delphi 用のオープン ソース プロファイラーを作成しました: http://code.google.com/p/asmprofiler/

完璧ではありませんが、無料でオープン ソースです :-)。

これを作成した主な理由は、正確なコール ツリーを見逃したためです。たとえば、ProDelphi はすべての呼び出しの概要と合計数のみを保存するため、特定の時間 (または期間) に特定のプロシージャがどのような呼び出しを行ったかを確認することはできません。また、タイムチャートがあるので、時間の経過とともに通話時間がどのように変化したかを確認できます。

于 2009-03-23T08:32:32.840 に答える
24

また、Eric Grange の Sampling Profilerもご覧ください。

于 2008-11-16T07:06:30.850 に答える
8

プロファイリング用の AQtime には非常に満足しています。

于 2008-11-15T02:04:12.473 に答える
4

GpProfileとAQTimeの両方を使用したことで、どのメソッド呼び出しがボトルネックを引き起こしているのかを見つけるのに両方が効果的であることがわかりました。

ただし、AQTimeは、ソースコードを変更せずに、これを引き起こしているコード行を教えてくれます(ただし、TD32デバッグおよびデバッグdcusで最適に動作します)。

私は最近、ルーチンを約30倍高速化するためにそれを使用しました(内部ライブラリ関数の不適切な使用のため)

しかし、私はそれを自分で支払う必要はありませんでした!

于 2008-11-17T02:43:14.797 に答える
3

AQTime Pro を使用していますが、満足しています。Smartbear は最近、完全に無料のAQTime 標準版をリリースしました。ほとんどの機能はまだありますが、もちろん少し削除されています

于 2011-07-08T06:53:11.690 に答える
2

Delphi Areaでプロファイラーコンポーネントを試した人はいますか?それはソース付きのフリーウェアであり、その記事は次のように述べています。

コードの実行時間を無料で測定する簡単で正確な方法を探しているなら、TProfilerが必要です。TProfilerは、コード内に名前付きタイマーを作成できるようにする非ビジュアルのデバッグコンポーネントです。

TProfilerの各タイマーは、次の情報を提供します。

タイマーが起動した回数(ヒット数)合計実行時間各ヒットの平均実行時間最初のヒットの実行時間最後のヒットの実行時間最小実行時間のヒット最大実行時間のヒット

于 2008-11-20T01:27:11.157 に答える
2

ProDelphi のインターフェイスについては同意しますが、十分に機能しているため、引き続き使用できます。重大なパフォーマンスの問題が発生したときは、非常にまれにプロファイルを作成するだけで済みます。これにより、常に問題を迅速に見つけることができます。お金の価値は非常に高く、Michael は新しいバージョンの更新を維持することにかなり長けているようです。

私が提案したいことの 1 つは、コードを挿入する必要があるため、関連するすべてのコードをある種の VCS に含めることは非常に価値があるということです。プロファイリングが必要な場合は、次のようにします。

  • 内のすべての関連ファイルをチェックしてください
  • それらをすべてチェックしてください
  • 必要なプロファイリングを行ってから、
  • すべてのチェックアウトをキャンセルして、元の場所に効果的にロールバックします。
于 2008-11-16T10:42:11.320 に答える
1

私は長い間 ProDelphi を使用してきましたが、それが私のニーズを満たしていることがわかりました。

提供されるデータを使用して、システム パフォーマンスの改善において驚くべき結果を達成することができました。

小規模なプロジェクトの場合は、無料版で十分です。

大規模なプロジェクトの場合は、(有料) プロ バージョンが必要です。

于 2012-06-13T00:23:19.710 に答える
1

確かに、プロファイリングに関しては、Primoz の GpProfile が恋しいですし、良い代替品が見つかりませんでした。AQTime を試したことはありますが、価格の割にはあまり満足できませんでした。

ただし、メモリ リークと危険なメモリ アクセスの追跡については、FastMM4 を使用している以上に満足することはできませんでした。

于 2008-11-14T22:34:44.160 に答える
1

プロファイラーについては、Gurock Software のSmartInspectを試すことができます。私は GpProfile を使用したことはありませんが、その機能セットをざっと見て、SmartInspect を思い出しました。興味深いことに、それはプロファイラーであると主張していませんが、GpProfile と同じくらいのようです (何かが欠けていない限り)。Delphi 2009 をサポートし、無料の試用版があり、AQTime よりも少し安いです。

: SmartInspect は、プロファイラーではなくロガーです。

于 2008-11-15T00:58:38.130 に答える
0

この古い回答(「delphiアプリケーションのメモリの断片化を監視または視覚化する方法」)で言及されているFastMM4メモリマネージャーは、実行時に照会できる(および付属のデモアプリケーションを使用してグリッドに表示できる)すべての割り当てのリストを保持します。統計はブロックサイズごとであるため、どのオブジェクトがリークしているかを正確に示すわけではありません。ただし、サーバーやサービスなど、本番環境のアプリケーションを長期間監視する場合に役立ちます。私は現在、それを「VisualMM」アドオンとして(商用の)Webアプリケーションサーバーフレームワークに統合しています。

于 2012-03-16T06:22:24.023 に答える