Adobe Flex 3 ヘルプ

プロファイリングについて

Adobe Flex プロファイラは、アプリケーションのパフォーマンスボトルネックやメモリリークの特定に役立ちます。プロファイラは Adobe Flex Builder から起動します。アプリケーションを操作すると、オブジェクトの数、オブジェクトのサイズ、メソッド呼び出しの回数、およびこれらのメソッドの呼び出しにかかった時間など、アプリケーションの状態に関するデータが記録されます。

アプリケーションのプロファイリングにより、アプリケーションに関して次の状態を理解できます。

  • 呼び出しの頻度 複数の呼び出しが必要ない場合に、コンピュータへの負荷が大きいメソッドが複数回呼び出されていることに気付く場合があります。最も頻繁に呼び出されているメソッドを特定することによって、パフォーマンスに最も影響するアプリケーションの部分に集中してパフォーマンスの調整を行うことができます。
  • メソッドの継続時間 特定のメソッドで費やされた時間が報告されます。メソッドが複数回呼び出された場合には、プロファイリング中にそのメソッドで費やされた時間の平均が報告されます。一部のメソッドによりパフォーマンスのボトルネックが生じていることが判明した場合、これらのメソッドの最適化を試みることができます。
  • 呼び出しスタック メソッドの呼び出しスタックをトレースすることにより、連続するメソッドをアプリケーションが呼び出すときに使用されるすべてのパスを確認することができます。これにより、不必要にメソッドが呼び出されていることが判明する場合があります。
  • インスタンス数(オブジェクト割り当て) 特定の数のインスタンスのみが必要な場合に、同じオブジェクトが何度も作成されていることに気付く場合があります。この場合、実際にそれらのオブジェクトの 1 つのみが必要な場合、シングルトンパターンの実装を検討できます。または、過剰なオブジェクト割り当てを削減するその他の手法の適用を検討できます。オブジェクト数が多く、それらすべてが必要なときは、オブジェクト自体を最適化してリソース全体およびメモリ使用量を削減することを検討できます。
  • オブジェクトサイズ 一部のオブジェクトが不均衡に大きいことに気付いた場合、それらのオブジェクトのメモリフットプリントを削減するための最適化を試行できます。これは特に、アプリケーションで頻繁に作成されるオブジェクトを最適化する場合に役に立ちます。
  • ガベージコレクション プロファイリングスナップショットを比較しているときに、アプリケーションで不要になった一部のオブジェクトが依然として「リーク」状態であるか、メモリ内に格納されていることに気付く場合があります。このようなメモリリークを回避するには、それらのオブジェクトに対して残っている参照を削除するロジックを追加します。

プロファイリングは、アプリケーション開発の過程における独立した一段階にすぎないと見なすべきではありません。むしろ、アプリケーション開発の各段階の必要不可欠な部分と言えます。可能であれば、問題が発生している領域を迅速に特定するために、アプリケーションのプロファイリングはアプリケーション開発の初期に頻繁に行うべきです。プロファイリングは繰り返し行うプロセスであり、可能な限り頻繁にプロファイリングを行うことにより、最大限のメリットが得られます。

プロファイリングのタイプについて

プロファイラを使用する前に、実行するプロファイリングの種類、すなわちパフォーマンスのプロファイリングかメモリのプロファイリングかを決定する必要があります。

パフォーマンスのプロファイリングは、アプリケーション内の、実行速度が遅く向上の可能性があるメソッドを探すプロセスです。これらの問題領域を特定した後、アプリケーションの実行が高速になってユーザー操作に迅速に応答するように、問題領域を最適化して実行時間を短縮できます。パフォーマンスのプロファイリングを実行するときは、通常、1 回だけ呼び出されるが同様のメソッドよりも実行時間が長いメソッド、または実行時間は短いが何度も呼び出されるメソッドという 2 つのものを探します。次に、パフォーマンスのプロファイリングデータを使用して、最適化するメソッドを特定します。メソッドの呼び出し回数を減らす方が、そのメソッド内のコードをリファクタリングするより効果的であることが分かる場合があります。

メモリのプロファイリングは、各オブジェクトまたはオブジェクトのタイプによりアプリケーションで使用されるメモリ量を検討するプロセスです。メモリのプロファイリングデータは、必要以上のオブジェクトが存在するかどうかの確認、単一タイプのオブジェクトが過剰に存在するかどうかの確認、およびガベージコレクションされていないオブジェクトの識別(メモリリーク)など、さまざまな方法で使用します。メモリのプロファイリングデータを使用して、オブジェクトサイズの削減や作成されるオブジェクト数の削減を試行したり、オブジェクト参照の削除によってオブジェクトに対しガベージコレクションを実行できるようにします。

メモリプロファイリングは、パフォーマンスプロファイリングより多くのメモリを使用するため、アプリケーションのパフォーマンスが低下する場合があります。メモリのプロファイリングは、必要な場合にのみ実行します。

多くの場合、パフォーマンスのプロファイリングとメモリのプロファイリングの両方を実行してパフォーマンスの問題源を特定します。パフォーマンスのプロファイリングを使用して、過剰なメモリ割り当ておよび長い実行時間の原因となるメソッドを特定します。次に、メモリのプロファイリングを使用して、それらのメソッドでのメモリリークを特定します。

実行するプロファイリングの種類を確認したら、プロファイラを起動できます。

その他のリソース

プロファイラ単独では、アプリケーションのサイズ、スピード、および体感上のパフォーマンスを改善することはできません。プロファイラを使用して問題となるメソッドおよびクラスを特定したら、アプリケーションの改善に役立つ次の Flex マニュアルの情報を参照してください。

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート