SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Visual Studio 2005 Team Edition for Software Developersを使ってみよう

VSTDのパフォーマンスプロファイラで、アプリケーションのボトルネックを検出しよう

Visual Studio 2005 Team Edition for Software Developersを使ってみよう (3)


  • X ポスト
  • このエントリーをはてなブックマークに追加

呼び出し元/呼び出し先ビュー

 概要ビューや関数ビューで右クリックして表示されるメニューなどから、このビューを表示することができます。呼び出し元/呼び出し先ビューでは、中央に現在対象としている関数が表示され、その上部には対象関数を呼び出した関数、下部には対象関数から呼び出された関数が表示されます。このビューで関数の前後関係を確認しながら、実行時間の長い関数やそれに関連する関数を簡単に確認することができます。

 また、ビュー内の適当な場所で右クリックして、[列の追加と削除]を選択することで関数ビューと同じように列を自由にカスタマイズすることができます。

図13:呼び出し元/呼び出し先ビュー
図13:呼び出し元/呼び出し先ビュー

 呼び出し元/呼び出し先ビューを利用したメイン操作は、関数のダブルクリックです。関数をダブルクリックすることでその関数を中心とした前後関係の確認を行う表示内容に簡単に切り替わります。関数をダブルクリックしながら呼び出し先の関数を表示していくことで、最終的にボトルネックとなっているポイントに到達することができます。

呼び出しツリービュー

 呼び出しツリービューは、レポート分析内容を表示している画面の下部にある[コールツリー]を選択することで表示できます。VS上では「コールツリー」、MSDNライブラリ上では[呼び出しツリー]となっているので注意してください。このビューでは、特定の呼び出し部分を掘り下げてパフォーマンスの影響が大きい部分に到達することができます。また、ビュー内の適当な場所で右クリックして、[列の追加と削除]を選択することで、関数ビューと同じように列を自由にカスタマイズすることができます。

図14:呼び出しツリービュー
図14:呼び出しツリービュー

 呼び出しツリービューで呼び出しを掘り下げていると、かなり深くまで展開しなければいけないことが多くあります。そこである地点を先頭に設定することができるようになっています。これには先頭に設定したい地点で右クリックして、表示されたメニューから[ルートの設定]を選択します。

図15:ルートの設定
図15:ルートの設定

 呼び出し元/呼び出し先ビューは、ある特定の関数に注目してその前後関係からボトルネック箇所にたどりつくアプローチでしたが、呼び出しツリービューではある程度全体を把握しながら、トップダウンでボトルネック箇所にたどりつくアプローチになります。どちらも最終的な目的は同じなので、その時々で利用しやすいほうを利用してください。

割り当てビュー

 割り当てビューは、呼び出しツリービューと同様にレポート分析内容を表示している画面の下部にある[割り当て]を選択することで表示できます。または後述のオブジェクトの有効期間ビューから表示させることもできます。このビューには、後述する.NETメモリプロファイリングの割り当てが有効な場合にのみデータが表示されます。割り当てビューは初期状態で、型(クラス)ごとにグループ化された状態で、インスタンス数や割り当てられたバイト数、全体との割合などが表示されています。型を展開すると、関数ごとの詳細を見ることもできます。

図16:割り当てビュー
図16:割り当てビュー

 この割り当てビューを利用して、インスタンス数や割り当てられたバイト数でソートを行えば、問題となっている関数やその型がなんなのかを容易に知ることができます。呼び出し元/呼び出し先ビューやコールツリーでは関数の単位でどこに問題があるのかを把握し、割り当てビューではそれがどの程度問題となっているのかを把握することができます。また、割り当てビューでも関数ビューなどと同様に、ビュー内の適当な場所で右クリックして表示されるメニューから[列の追加と削除]を選択することで列を自由にカスタマイズすることができます。

オブジェクトの有効期間ビュー

 オブジェクトの有効期間ビューも、呼び出しツリービューなどと同様にレポート分析内容を表示している画面の下部にある[オブジェクトの有効期間]を選択することで表示できます。または割り当てビュー内の適当な場所で右クリックして表示されるメニューから[オブジェクトの有効期間ビューで表示]を選択しても表示できます(図17)。このビューも割り当てビュー同様に、後述する.NETメモリプロファイリングの割り当てが有効な場合にのみデータが表示されます。

図17:オブジェクトの有効期間ビューへの切り替え
図17:オブジェクトの有効期間ビューへの切り替え

 オブジェクトの有効期間ビューでは型(クラス)ごとに世代0~2のインスタンス数など、割り当てビューより詳細なデータを確認することができます。

図18:オブジェクトの有効期間ビュー
図18:オブジェクトの有効期間ビュー

 オブジェクトの有効期間ビューで型ごとのインスタンスの存続期間を確認することで、存在時間が長いものが多い(世代2が多い)ことが問題なのか世代は短いがメモリ量が多すぎて問題なのかなどの情報を確認して対処方法の検討を行うことができます。ただし、このビューでは型の中で実際に利用された関数の情報は確認できないため、割り当てビューと相互に補完しあう形で参照することになります。このためオブジェクトの有効期間ビューの適当な場所で右クリックして表示されるメニューには[割り当てビューで表示]という項目が存在しています。

図19:割り当てビューへの移動
図19:割り当てビューへの移動

次のページ
レポートの出力

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Visual Studio 2005 Team Edition for Software Developersを使ってみよう連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト りばてぃ/FUJIKO/ナオキ(リバティ, フジコ, ナオキ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2497 2008/09/05 11:20

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング