(57)【特許請求の範囲】
【請求項１】
コンピュータに、
コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力するコンテキスト情報と、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する性能プロファイル情報を読み込み、
読み込んだコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計し、
コンテキスト別に集計した性能プロファイル情報を出力する
処理を実行させることを特徴とする性能情報生成プログラム。
【請求項２】
前記コンテキスト情報収集プログラムは、実行順序に対応付けて前記コンテキスト情報を収集し、
前記性能プロファイル情報収集プログラムは、実行順序に対応付けて前記性能プロファイル情報を収集し、
前記集計する処理は、実行順序に基づいて前記コンテキスト情報と前記性能プロファイル情報とを組合せることによってコンテキスト別に性能プロファイル情報を集計することを特徴とする請求項１に記載の性能情報生成プログラム。
【請求項３】
前記コンテキスト情報はコールパス情報であり、前記性能プロファイル情報はキャッシュミス数であることを特徴とする請求項１又は２に記載の性能情報生成プログラム。
【請求項４】
前記コンテキスト情報は所定の特性値に関する情報であり、前記性能プロファイル情報は実行時間であることを特徴とする請求項１又は２に記載の性能情報生成プログラム。
【請求項５】
ソースプログラムから前記コンテキスト情報収集プログラム及び前記性能プロファイル情報収集プログラムを作成する処理をさらにコンピュータに実行させることを特徴とする請求項１〜４のいずれか１つに記載の性能情報生成プログラム。
【請求項６】
コンピュータが、
コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力するコンテキスト情報と、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する性能プロファイル情報を読み込み、
読み込んだコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計し、
コンテキスト別に集計した性能プロファイル情報を出力する
処理を実行することを特徴とする性能情報生成方法。
【請求項７】
コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力するコンテキスト情報と、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する性能プロファイル情報を読み込む読込部と、
前記読込部により読み込まれたコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計する集計部と、
前記集計部によりコンテキスト別に集計された性能プロファイル情報を出力する出力部と
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、性能情報生成プログラム、性能情報生成方法及び情報処理装置に関する。
【背景技術】
【０００２】
プログラムを実行してプログラムのある部分の実行時間、キャッシュミス数等の性能プロファイル情報を採取する際、ソースコード上では同じ部分でも、コンテキスト別に性能プロファイル情報を採取したい場合がある。ここで、コンテキストとは、プロファイル情報が採取される性能に関わり、かつ、実行時に決まる計算機の状態のことである。
【０００３】
コンテキストの例としては、性能プロファイル情報が採取される部分への呼び出し元のルーチンを辿ったコールパス、計算に使用する配列の値の特性値等がある。コンテキスト別に性能プロファイル情報を採取することによって、より有効な性能チューニングが行える、あるいは、性能調査時間が短縮する等の利点が得られる。
【０００４】
図２０は、コンテキスト別の性能プロファイル情報の従来の採取方法を説明するための図である。図２０に示すように、性能プロファイル情報の採取対象のソースコード２には、採取対象の範囲のコードと採取対象範囲外のコードが含まれる。採取対象のコードは採取対象範囲外のコードに挟まれる。
【０００５】
また、性能プロファイル情報の採取機能の付加後の採取機能付加コード９０には、採取対象の範囲のコードと採取対象範囲外のコードに加えて、採取用のコードが含まれる。採取用のコードには、採取開始時点でのコンテキスト情報採取コード、採取開始時点での性能プロファイル情報採取コード、採取終了時点での性能プロファイル情報採取コード及び採取終了時点でのコンテキスト情報採取コードがある。
【０００６】
採取対象の範囲のコードが実行される直前に、採取開始時点でのコンテキスト情報採取コードと採取開始時点での性能プロファイル情報採取コードが実行される。そして、採取対象の範囲のコードが実行された直後に、採取終了時点での性能プロファイル情報採取コードと採取終了時点でのコンテキスト情報採取コードが実行される。
【０００７】
なお、性能チューニングに関する技術として、性能情報及び測定条件と次回の測定条件がリンク可能に管理された情報に基づいて次回の測定環境を自動的に設定することで、性能チューニングを効率良く行う従来技術がある。
【０００８】
また、並列実行プログラムの並列実行単位ごとに実行回数を計測し、計測結果を解析して並列実行における負荷の分散を示す解析結果を出力することで、並列実行プログラムのチューニングを支援する従来技術がある。
【０００９】
また、プログラムに対して性能解析コードを埋め込み、プロセッサバスの状態を観測してプログラム動作との関連づけを行い、処理終了後に結果をホスト計算機に転送して性能解析を行うことで、特別なハードウェアを用いることなく性能解析を行う従来技術がある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００７−２３３８５５号公報
【特許文献２】特開２００４−１０２５９４号公報
【特許文献３】特開２００７−３０４９４６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
性能プロファイル情報に関して図２０に示した従来の採取方法には、コンテキスト情報と性能プロファイル情報を同時に採取するため、コンテキスト情報を採取しない場合と比較して性能が変化し、性能プロファイル情報の精度が悪くなるという問題がある。
【００１２】
本発明は、１つの側面では、性能プロファイル情報の精度の悪化を抑えることを目的とする。
【課題を解決するための手段】
【００１３】
本願の開示する性能情報生成プログラムは、１つの態様において、コンピュータに、コンテキスト情報と性能プロファイル情報を読み込ませる処理を実行させる。前記コンテキスト情報は、コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力する。前記性能プロファイル情報は、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する。そして、前記性能情報生成プログラムは、読み込んだコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計し、コンテキスト別に集計した性能プロファイル情報を出力する処理をコンピュータに実行させる。
【発明の効果】
【００１４】
１実施態様によれば、性能プロファイル情報の精度の悪化を抑えることができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施例に係る情報処理装置によるコンテキスト別の性能プロファイル情報の採取方法を説明するための図である。
【図２】図２は、実施例に係る情報処理装置の機能構成を示す図である。
【図３】図３は、ソースコードの一例を示す図である。
【図４】図４は、範囲指定の一例を示す図である。
【図５】図５は、性能プロファイル採取コードの一例を示す図である。
【図６】図６は、コンテキスト採取コードの一例を示す図である。
【図７】図７は、性能プロファイル採取コードの他の例を示す図である。
【図８】図８は、コンテキスト採取コードの他の例を示す図である。
【図９】図９は、図５に示した性能プロファイル採取コードが実行されて採取された性能プロファイル情報を示す図である。
【図１０】図１０は、図６に示したコンテキスト採取コードが実行されて採取されたコンテキスト情報を示す図である。
【図１１】図１１は、図７に示した性能プロファイル採取コードが実行されて採取された性能プロファイル情報を示す図である。
【図１２】図１２は、図８に示したコンテキスト採取コードが実行されて採取されたコンテキスト情報を示す図である。
【図１３】図１３は、実施例に係る情報処理装置によるコンテキスト別性能プロファイル情報の採取処理のフローを示すフローチャートである。
【図１４】図１４は、コンテキスト別性能プロファイル情報を作成する処理のフローを示すフローチャートである。
【図１５】図１５は、コールパス毎のキャッシュミス数を集計する処理のフローを示すフローチャートである。
【図１６】図１６は、コールパス別のキャッシュミス数を示す図である。
【図１７】図１７は、配列の特性値を４区間に分けてそれぞれの合計実行時間を集計する処理のフローを示すフローチャートである。
【図１８】図１８は、特性値区間別の実行時間を示す図である。
【図１９】図１９は、実施例に係る性能情報生成プログラムを実行するコンピュータの構成を示す図である。
【図２０】図２０は、コンテキスト別の性能プロファイル情報の従来の採取方法を説明するための図である。
【発明を実施するための形態】
【００１６】
以下に、本願の開示する性能情報生成プログラム、性能情報生成方法及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１７】
まず、実施例に係る情報処理装置によるコンテキスト別の性能プロファイル情報の採取方法について説明する。図１は、実施例に係る情報処理装置によるコンテキスト別の性能プロファイル情報の採取方法を説明するための図である。図１に示すように、実施例に係る情報処理装置は、対象のソースコード２から、性能プロファイル採取コード４とコンテキスト採取コード５を作成する。性能プロファイル採取コード４は、順序付けて性能プロファイル情報のみを採取する機能が付加されたコードである。コンテキスト採取コード５は、順序付けてコンテキスト情報のみを採取する機能が付加されたコードである。
【００１８】
性能プロファイル採取コード４には、採取対象の範囲のコードと採取対象範囲外のコードに加えて、性能プロファイル情報の採取用コードが含まれる。性能プロファイル情報の採取用コードには、採取開始時点での性能プロファイル情報を実行順序と対応付けて採取するコードと、採取終了時点での性能プロファイル情報を実行順序と対応付けて採取するコードがある。
【００１９】
性能プロファイル採取コード４の実行では、採取対象の範囲のコードが実行される直前に、採取開始時点での性能プロファイル情報を実行順序と対応付けて採取するコードが実行される。そして、採取対象の範囲のコードが実行された直後に、採取終了時点での性能プロファイル情報を実行順序と対応付けて採取するコードが実行される。
【００２０】
コンテキスト採取コード５には、採取対象の範囲のコードと採取対象範囲外のコードに加えてコンテキスト情報の採取用コードが含まれる。コンテキスト情報の採取用コードには、採取開始時点でのコンテキスト情報を実行順序と対応付けて採取するコードと、採取終了時点でのコンテキスト情報を実行順序と対応付けて採取するコードがある。
【００２１】
コンテキスト採取コード５の実行では、採取対象の範囲のコードが実行される直前に、採取開始時点でのコンテキスト情報を実行順序と対応付けて採取するコードが実行される。そして、採取対象の範囲のコードが実行された直後に、採取終了時点でのコンテキスト情報を実行順序と対応付けて採取するコードが実行される。
【００２２】
そして、実施例に係る情報処理装置は、順序付けて性能プロファイル情報のみを採取した結果と、順序付けてコンテキスト情報のみを採取した結果を基に、コンテキスト別に性能プロファイル情報を集計する。実施例に係る情報処理装置は、測定対象の範囲が実行された順序毎の性能プロファイル情報とコンテキスト情報から順序に基づいて集計を行う。
【００２３】
このように、実施例に係る情報処理装置は、性能プロファイル情報を採取する動作のみが追加された状態で性能プロファイル情報を測定するので、高精度な性能プロファイル情報をコンテキスト別に得ることができる。
【００２４】
例えば、採取する性能プロファイル情報がキャッシュミス数であり、コンテキスト情報がコールパスであるとする。従来の方法では、キャッシュミス数を採取するときにコールパスの採取も行うため、コールパス採取に伴いキャッシュから追い出された要素を測定範囲内で再度キャッシュに読み直すこと、すなわちキャッシュミスが発生する場合がある。そのため、性能プロファイル情報を採取しない通常の実行方法で発生するキャッシュミス数より過剰な値が測定される可能性がある。
【００２５】
コールパスの採取では、各呼び出し元のアドレスなどを読む必要があるが、これらのメモリ上の格納場所は連続していない場合が多いため、採取に伴い少なくともコールパスの長さと同じ数の要素をキャッシュから追い出す可能性がある。その結果、キャッシュミス数は、コールパスの長さと同じ数の分、過剰に測定される場合がある。
【００２６】
実施例に係る採取方法で得られるキャッシュミス数は、キャッシュミス数のみを採取するというオーバヘッドの少ない方法で得られたものであるため、性能プロファイル情報を採取しない通常の実行方法で発生するキャッシュミス数に最も近い値となる。
【００２７】
別の例として、採取する性能プロファイル情報が実行時間であり、コンテキスト情報が計算に使用する配列の特性値であるとする。性能分析に有用な特性値としては、ループ中の分岐について、反復毎にどの方向に分岐するかを決める配列について、ある方向に分岐させる値の割合などが考えられる。このような特性値を計算するためには、全ての配列要素にアクセスする必要があるため、通常の実行時と比べてキャッシュメモリの使用状況が変化し、実行時間が大きく影響を受ける。このため、実施例に係る情報処理装置は、実行時間と配列の特性値を別個に採取した結果を集計することで、通常の実行時に近い実行時間を得ることができる。
【００２８】
次に、実施例に係る情報処理装置の機能構成について説明する。図２は、実施例に係る情報処理装置の機能構成を示す図である。図２に示すように、実施例に係る情報処理装置１は、性能情報生成部１ａを有する。性能情報生成部１ａは、コンテキスト別の性能プロファイル情報を生成する。性能情報生成部１ａは、コード作成部１１と、コンパイル部１２と、実行部１３と、プロファイル情報作成部１４とを有する。
【００２９】
コード作成部１１は、ソースコード２と範囲指定３を入力し、性能プロファイル採取コード４とコンテキスト採取コード５を作成して出力する。図３は、ソースコード２の一例を示す図である。図３は、ソースコード２の一例として関数（Function）Ａを示す。
【００３０】
範囲指定３は、ソースコード２の中で性能プロファイル情報を採取する範囲を指定する。図４は、範囲指定３の一例を示す図である。図４は、範囲指定３の一例として関数Ａの始めから終わりまでの指定を示す。
【００３１】
図５は、性能プロファイル採取コード４の一例を示す図である。図５は、順序付けてキャッシュミス数を採取するためのコードが関数Ａの処理の前後に埋め込まれた場合を示す。図５において、「順序番号＝順序番号＋１」は、関数Ａが実行される毎に順序付けのための番号である順序番号を更新するために埋め込まれたコードである。
【００３２】
「整数配列［順序番号］＝この時点の総キャッシュミス数」は、キャッシュミス数を記憶する配列である整数配列に順序番号をインデクスとして採取開始時点でのキャッシュミス数を格納するために埋め込まれたコードである。「整数配列［順序番号］＝この時点の総キャッシュミス数−整数配列［順序番号］」は、関数Ａの始めから終わりまでのキャッシュミス数を整数配列に順序番号をインデクスとして格納するために埋め込まれたコードである。
【００３３】
図６は、コンテキスト採取コード５の一例を示す図である。図６は、順序付けてコールパスを採取するためのコードが関数Ａの処理の前に埋め込まれた場合を示す。図６では、コールパスは関数Ａの処理の前後で変化しないため、関数Ａの処理の後へのコールパスを採取するコードの埋め込みは省略されている。図６において、「この時点のコールパスを計算して文字列の形式で出力」は、コールパスを表す文字列を作成するために埋め込まれたコードである。「文字列配列［順序番号］＝この時点のコールパスの文字列」は、コールパスを表す文字列をコールパスを記憶する配列である文字列配列に順序番号をインデクスとして格納するために埋め込まれたコードである。
【００３４】
図７は、性能プロファイル採取コード４の他の例を示す図である。図７は、順序付けて実行時間を採取するためのコードが関数Ａの処理の前後に埋め込まれた場合を示す。図７において、「実数配列［順序番号］＝この時点の時刻」は、実行時間を記憶する配列である実数配列に順序番号をインデクスとして採取開始時点での実行時間を格納するために埋め込まれたコードである。「実数配列［順序番号］＝この時点の時刻−実数配列［順序番号］」は、関数Ａの始めから終わりまでの実行時間を実数配列に順序番号をインデクスとして格納するために埋め込まれたコードである。
【００３５】
図８は、コンテキスト採取コード５の他の例を示す図である。図８は、順序付けて配列の特性値を採取するためのコードが関数Ａの処理の前に埋め込まれた場合を示す。図８では、配列の特性値は関数Ａの処理の前後で変化しないため、関数Ａの処理の後への配列の特性値を採取するコードの埋め込みは省略されている。図８において、「計算に使用する配列の特性値を計算」は、計算に使用する配列の特性値を計算するために埋め込まれたコードである。「実数配列［順序番号］＝計算に使用する配列の特性値」は、計算に使用する配列の特性値を記憶する配列である実数配列に順序番号をインデクスとして格納するために埋め込まれたコードである。なお、ここでは、特性値は０から１の実数であり、０から１を４つに等分した区間それぞれの実行時間が必要であるとする。
【００３６】
図２に戻って、コンパイル部１２は、性能プロファイル採取コード４を入力してコンパイルを行い、性能プロファイル採取バイナリ６を出力する。また、コンパイル部１２は、コンテキスト採取コード５を入力してコンパイルを行い、コンテキスト採取バイナリ７を出力する。
【００３７】
実行部１３は、性能プロファイル採取バイナリ６を入力して実行し、性能プロファイル情報８を出力する。また、実行部１３は、コンテキスト採取バイナリ７を入力して実行し、コンテキスト情報９を出力する。図９は、図５に示した性能プロファイル採取コード４が実行されて採取された性能プロファイル情報８を示す図である。図９に示すように、性能プロファイル情報８は、順序番号とキャッシュミス数とが対応付けられた情報である。例えば、順序番号が１のとき、関数Ａの始めから終わりまでのキャッシュミス数は１０である。
【００３８】
図１０は、図６に示したコンテキスト採取コード５が実行されて採取されたコンテキスト情報９を示す図である。図１０に示すように、コンテキスト情報９は、順序番号とコールパスとが対応付けられた情報である。例えば、順序番号が１のとき、関数Ｄが関数Ｂを呼び出し、関数Ｂが関数Ａを呼び出す。
【００３９】
図１１は、図７に示した性能プロファイル採取コード４が実行されて採取された性能プロファイル情報８を示す図である。図１１に示すように、性能プロファイル情報８は、順序番号と実行時間とが対応付けられた情報である。実行時間の単位はμ（マイクロ）秒である。例えば、順序番号が１のとき、関数Ａの始めから終わりまでの実行時間は１０μ秒である。
【００４０】
図１２は、図８に示したコンテキスト採取コード５が実行されて採取されたコンテキスト情報９を示す図である。図１２に示すように、コンテキスト情報９は、順序番号と配列の特性値とが対応付けられた情報である。図１２では、特性値は％表示されている。例えば、順序番号が１のとき、配列の特性値は１０％である。
【００４１】
図２に戻って、プロファイル情報作成部１４は、性能プロファイル情報８及びコンテキスト情報９を入力してコンテキスト別性能プロファイル情報１０を作成して出力する。プロファイル情報作成部１４は、読込部１５と、集計部１６と、出力部１７とを有する。
【００４２】
読込部１５は、性能プロファイル情報８及びコンテキスト情報９を読み込む。集計部１６は、性能プロファイル情報８とコンテキスト情報９に基づいてコンテキスト別性能プロファイル情報１０を作成する。出力部１７は、コンテキスト別性能プロファイル情報１０をファイルに出力する。
【００４３】
次に、実施例に係る情報処理装置１によるコンテキスト別性能プロファイル情報１０の採取処理のフローについて説明する。図１３は、実施例に係る情報処理装置１によるコンテキスト別性能プロファイル情報１０の採取処理のフローを示すフローチャートである。図１３に示すように、コード作成部１１が、ソースコード２と範囲指定３に基づいて、性能プロファイル採取コード４とコンテキスト採取コード５を作成する（ステップＳ１）。
【００４４】
そして、コンパイル部１２が、性能プロファイル採取コード４とコンテキスト採取コード５をコンパイルし、性能プロファイル採取バイナリ６とコンテキスト採取バイナリ７を作成する（ステップＳ２）。そして、実行部１３が、性能プロファイル採取バイナリ６及びコンテキスト採取バイナリ７をそれぞれ実行し、順序付けされた性能プロファイル情報８と順序付けされたコンテキスト情報９を作成する（ステップＳ３）。
【００４５】
そして、プロファイル情報作成部１４が、順序付けされた性能プロファイル情報８と順序付けされたコンテキスト情報９を組合せて、コンテキスト別性能プロファイル情報１０を作成する（ステップＳ４）。
【００４６】
このように、情報処理装置１は、順序付けされた性能プロファイル情報８と順序付けされたコンテキスト情報９を別に採取することによって、性能プロファイル情報８の精度の悪化を抑えることができる。
【００４７】
次に、ステップＳ４に示した処理のフロー、すなわちコンテキスト別性能プロファイル情報１０を作成する処理のフローについて説明する。図１４は、コンテキスト別性能プロファイル情報１０を作成する処理のフローを示すフローチャートである。
【００４８】
図１４に示すように、プロファイル情報作成部１４は、処理中の順序番号を示すｓを１で初期化し（ステップＳ１１）、ｓが順序番号の最大値以下であるか否かを判定する（ステップＳ１２）。
【００４９】
その結果、ｓが順序番号の最大値以下である場合には、プロファイル情報作成部１４は、順序番号ｓに対応する性能プロファイル情報をｐとし、順序番号ｓに対応するコンテキスト情報をｃとする（ステップＳ１３）。
【００５０】
そして、プロファイル情報作成部１４は、ｃ＿ｎをｃの値が属するカテゴリ番号とし、ａｒｒ[ｃ＿ｎ][ｎｕｍ[ｃ＿ｎ]]にｐを格納し、ｎｕｍ[ｃ＿ｎ]に１を加え、ｓに１を加える（ステップＳ１４）。ここで、ａｒｒは、カテゴリ毎に性能プロファイル情報８を記憶する配列である。また、ｎｕｍ[ｃ＿ｎ]は、カテゴリ毎の性能プロファイル情報８のインデクスであり、初期値は１である。すなわち、プロファイル情報作成部１４は、ｃをカテゴリに分けて、カテゴリ毎に順に性能プロファイル情報８を保存する。そして、プロファイル情報作成部１４は、ステップＳ１２に戻る。
【００５１】
一方、ｓが順序番号の最大値以下でない場合には、プロファイル情報作成部１４は、全てのｃ＿ｎについて、ｃ＿ｎと、ａｒｒ[ｃ＿ｎ][１]〜ａｒｒ[ｃ＿ｎ][ｎｕｍ[ｃ＿ｎ]−１]の統計量を対応させて出力する（ステップＳ１５）。ここで、統計量は、例えば、合計値、平均値等である。
【００５２】
このように、プロファイル情報作成部１４は、順序付けされた性能プロファイル情報８と順序付けされたコンテキスト情報９を組合せることで、コンテキスト別性能プロファイル情報１０を作成することができる。
【００５３】
次に、コンテキスト別性能プロファイル情報１０を作成する処理の具体例について図１５〜図１８を用いて説明する。図１５は、コールパス毎のキャッシュミス数を集計する処理のフローを示すフローチャートである。
【００５４】
図１５に示すように、プロファイル情報作成部１４は、処理中の順序番号を示すｓを１で初期化し（ステップＳ２１）、ｓが順序番号の最大値以下であるか否かを判定する（ステップＳ２２）。
【００５５】
その結果、ｓが順序番号の最大値以下である場合には、プロファイル情報作成部１４は、順序番号ｓに対応するキャッシュミス数をｎとし、順序番号ｓに対応するコールパスをｃａｌｌｐａｔｈとする（ステップＳ２３）。
【００５６】
そして、プロファイル情報作成部１４は、ｃａｃｈｅｍｉｓｓ[ｃａｌｌｐａｔｈ]が定義済であるか否かを判定し（ステップＳ２４）、定義済でない場合には、ｃａｃｈｅｍｉｓｓ[ｃａｌｌｐａｔｈ]を０に初期化する（ステップＳ２５）。ここで、ｃａｃｈｅｍｉｓｓは、キャッシュミス数の配列であり、ｃａｌｌｐａｔｈをインデクスとする。
【００５７】
そして、プロファイル情報作成部１４は、ｃａｃｈｅｍｉｓｓ[ｃａｌｌｐａｔｈ]にｎを加え、ｓに１を加え（ステップＳ２６）、ステップＳ２２に戻る。なお、「ｘ＋＝ｎ」は、ｘにｎを加えることを表す。
【００５８】
一方、ステップＳ２２において、ｓが順序番号の最大値以下でない場合には、プロファイル情報作成部１４は、全てのｃａｌｌｐａｔｈについて、ｃａｌｌｐａｔｈとｃａｃｈｅｍｉｓｓ[ｃａｌｌｐａｔｈ]を対応させて出力する（ステップＳ２７）。
【００５９】
図１６は、図９に示した順序番号毎のキャッシュミス数及び図１０に示した順序番号毎のコールパスに基づいて、プロファイル情報作成部１４により作成されたコールパス別のキャッシュミス数を示す図である。図１６に示すように、２つのコールパスについて、キャッシュミス数が集計されている。例えば、関数Ｄが関数Ｂを呼び出し、関数Ｂが関数Ａを呼び出す場合のキャッシュミス数は、順序番号が１、３及び５のキャッシュミス数の合計であり、１０＋０＋１０＝２０である。
【００６０】
このように、プロファイル情報作成部１４は、順序番号に対応するキャッシュミス数をコールパス毎に合計することによって、コールパス別のキャッシュミス数の情報を作成することができる。
【００６１】
図１７は、配列の特性値を４区間に分けてそれぞれの合計実行時間を集計する処理のフローを示すフローチャートである。図１７に示すように、プロファイル情報作成部１４は、処理中の順序番号を示すｓを１で初期化し、配列の特性値の４つの区間の実行時間を記憶する配列であるｔｉｍｅの各要素を０に初期化する（ステップＳ３１）。ｉは、区間を示すインデクスである。そして、プロファイル情報作成部１４は、ｓが順序番号の最大値以下であるか否かを判定する（ステップＳ３２）。
【００６２】
その結果、ｓが順序番号の最大値以下である場合には、プロファイル情報作成部１４は、順序番号ｓに対応する実行時間をｔとし、順序番号ｓに対応する特性値をｃとする（ステップＳ３３）。
【００６３】
そして、プロファイル情報作成部１４は、ｃに対応する区間のｔｉｍｅの値にｔを加え、ｓに１を加える（ステップＳ３４）。なお、「ｆｌｏｏｒ（ｘ）」は、実数ｘに対してｘ以下の最大の整数を計算する床関数である。そして、プロファイル情報作成部１４は、ステップＳ３２に戻る。
【００６４】
一方、ステップＳ３２において、ｓが順序番号の最大値以下でない場合には、プロファイル情報作成部１４は、４つの区間それぞれについて、区間と実行時間を対応させて出力する（ステップＳ３５）。
【００６５】
図１８は、図１１に示した順序番号毎の実行時間及び図１２に示した順序番号毎の配列特性値に基づいて、プロファイル情報作成部１４により作成された特性値区間別の実行時間を示す図である。図１８に示すように、４つの区間について、実行時間が集計されている。例えば、特性値の区間が０以上２５％未満の場合には、順序番号が１と６の実行時間の合計であり、１０＋２０＝３０である。
【００６６】
このように、プロファイル情報作成部１４は、順序番号に対応する実行時間を特性値の区間毎に合計することによって、特性値の区間別の実行時間の情報を作成することができる。
【００６７】
上述してきたように、実施例では、プロファイル情報作成部１４の読込部１５が性能プロファイル情報８とコンテキスト情報９を読み込み、集計部１６がコンテキスト別に性能プロファイル情報８を集計し、コンテキスト別性能プロファイル情報１０を作成する。そして、出力部１７がコンテキスト別性能プロファイル情報１０を出力する。したがって、性能情報生成部１ａは、性能プロファイル情報８とコンテキスト情報９を別々に作成することでコンテキスト別性能プロファイル情報１０を作成することができ、性能プロファイル情報の精度の悪化を抑えることができる。
【００６８】
また、実施例では、実行部１３は、順序番号に対応付けて性能プロファイル情報８及びコンテキスト情報９を作成し、集計部１６は、順序番号に基づいて性能プロファイル情報８とコンテキスト情報９を組合せることでコンテキスト別性能プロファイル情報１０を作成する。したがって、性能情報生成部１ａは、性能プロファイル情報８とコンテキスト情報９を別々に作成することができる。
【００６９】
また、実施例では、読込部１５は、性能プロファイル情報８としてキャッシュミス数の情報を読み込み、コンテキスト情報９としてコールパスの情報を読み込む。したがって、性能情報生成部１ａは、コンテキスト別性能プロファイル情報１０の例として、コールパス別のキャッシュミス数の情報を作成することができる。
【００７０】
また、実施例では、読込部１５は、性能プロファイル情報８として実行時間の情報を読み込み、コンテキスト情報９として配列の特性値を読み込む。したがって、性能情報生成部１ａは、コンテキスト別性能プロファイル情報１０の例として、特性値の区間別の実行時間の情報を作成することができる。
【００７１】
また、実施例では、コード作成部１１は、ソースコード２を入力して性能プロファイル採取コード４及びコンテキスト採取コード５を作成する。そして、性能プロファイル採取コード４及びコンテキスト採取コード５が実行部１３により実行されることにより、それぞれ性能プロファイル情報８及びコンテキスト情報９が作成される。したがって、性能チューニングを行う技術者は、簡単にコンテキスト別性能プロファイル情報１０を得ることができる。
【００７２】
なお、実施例では、性能情報生成部１ａについて説明したが、性能情報生成部１ａが有する構成をソフトウェアによって実現することで、同様の機能を有する性能情報生成プログラムを得ることができる。そこで、性能情報生成プログラムを実行するコンピュータについて説明する。
【００７３】
図１９は、実施例に係る性能情報生成プログラムを実行するコンピュータの構成を示す図である。図１９に示すように、コンピュータ２０は、メインメモリ２１と、ＣＰＵ（Central  Processing  Unit）２２と、ＬＡＮ（Local  Area  Network）インタフェース２３と、ＨＤＤ（Hard  Disk  Drive）２４とを有する。また、コンピュータ２０は、スーパーＩＯ（Input  Output）２５と、ＤＶＩ（Digital  Visual  Interface）２６と、ＯＤＤ（Optical  Disk  Drive）２７とを有する。
【００７４】
メインメモリ２１は、プログラムやプログラムの実行途中結果などを記憶するメモリである。ＣＰＵ２２は、メインメモリ２１からプログラムを読み出して実行する中央処理装置である。ＣＰＵ２２は、メモリコントローラを有するチップセットを含む。
【００７５】
ＬＡＮインタフェース２３は、コンピュータ２０をＬＡＮ経由で他のコンピュータに接続するためのインタフェースである。ＨＤＤ２４は、プログラムやデータを格納するディスク装置であり、スーパーＩＯ２５は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。ＤＶＩ２６は、液晶表示装置を接続するインタフェースであり、ＯＤＤ２７は、ＤＶＤの読み書きを行う装置である。
【００７６】
ＬＡＮインタフェース２３は、ＰＣＩエクスプレス（ＰＣＩｅ）によりＣＰＵ２２に接続され、ＨＤＤ２４及びＯＤＤ２７は、ＳＡＴＡ（Serial  Advanced  Technology  Attachment）によりＣＰＵ２２に接続される。スーパーＩＯ２５は、ＬＰＣ（Low  Pin  Count）によりＣＰＵ２２に接続される。
【００７７】
そして、コンピュータ２０において実行される性能情報生成プログラムは、ＤＶＤに記憶され、ＯＤＤ２７によってＤＶＤから読み出されてコンピュータ２０にインストールされる。あるいは、性能情報生成プログラムは、ＬＡＮインタフェース２３を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ２０にインストールされる。そして、インストールされた性能情報生成プログラムは、ＨＤＤ２４に記憶され、メインメモリ２１に読み出されてＣＰＵ２２によって実行される。
【００７８】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００７９】
（付記１）コンピュータに、
コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力するコンテキスト情報と、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する性能プロファイル情報を読み込み、
読み込んだコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計し、
コンテキスト別に集計した性能プロファイル情報を出力する
処理を実行させることを特徴とする性能情報生成プログラム。
【００８０】
（付記２）前記コンテキスト情報収集プログラムは、実行順序に対応付けて前記コンテキスト情報を収集し、
前記性能プロファイル情報収集プログラムは、実行順序に対応付けて前記性能プロファイル情報を収集し、
前記集計する処理は、実行順序に基づいて前記コンテキスト情報と前記性能プロファイル情報とを組合せることによってコンテキスト別に性能プロファイル情報を集計することを特徴とする付記１に記載の性能情報生成プログラム。
【００８１】
（付記３）前記コンテキスト情報はコールパス情報であり、前記性能プロファイル情報はキャッシュミス数であることを特徴とする付記１又は２に記載の性能情報生成プログラム。
【００８２】
（付記４）前記コンテキスト情報は所定の特性値に関する情報であり、前記性能プロファイル情報は実行時間であることを特徴とする付記１又は２に記載の性能情報生成プログラム。
【００８３】
（付記５）ソースプログラムから前記コンテキスト情報収集プログラム及び前記性能プロファイル情報収集プログラムを作成する処理をさらにコンピュータに実行させることを特徴とする付記１〜４のいずれか１つに記載の性能情報生成プログラム。
【００８４】
（付記６）コンピュータが、
コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力するコンテキスト情報と、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する性能プロファイル情報を読み込み、
読み込んだコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計し、
コンテキスト別に集計した性能プロファイル情報を出力する
処理を実行することを特徴とする性能情報生成方法。
【００８５】
（付記７）コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力するコンテキスト情報と、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する性能プロファイル情報を読み込む読込部と、
前記読込部により読み込まれたコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計する集計部と、
前記集計部によりコンテキスト別に集計された性能プロファイル情報を出力する出力部と
を有することを特徴とする情報処理装置。
【００８６】
（付記８）コンピュータに、
コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力するコンテキスト情報と、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する性能プロファイル情報を読み込み、
読み込んだコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計し、
コンテキスト別に集計した性能プロファイル情報を出力する
処理を実行させることを特徴とする性能情報生成プログラムを記憶したコンピュータ読み取り可能記憶媒体。
【００８７】
（付記９）メモリと該メモリに接続されたプロセッサとを有する情報処理装置において、
前記プロセッサに、
コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力するコンテキスト情報と、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する性能プロファイル情報を読み込み、
読み込んだコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計し、
コンテキスト別に集計した性能プロファイル情報を出力する
処理を実行させることを特徴とする情報処理装置。
【符号の説明】
【００８８】
１    情報処理装置
１ａ    性能情報生成部
２    ソースコード
３    範囲指定
４    性能プロファイル採取コード
５    コンテキスト採取コード
６    性能プロファイル採取バイナリ
７    コンテキスト採取バイナリ
８    性能プロファイル情報
９    コンテキスト情報
１０    コンテキスト別性能プロファイル情報
１１    コード作成部
１２    コンパイル部
１３    実行部
１４    プロファイル情報作成部
１５    読込部
１６    集計部
１７    出力部
２０    コンピュータ
２１    メインメモリ
２２    ＣＰＵ
２３    ＬＡＮインタフェース
２４    ＨＤＤ
２５    スーパーＩＯ
２６    ＤＶＩ
２７    ＯＤＤ
９０    採取機能付加コード
【図１】
0006471615.tif 000002
【図２】
0006471615.tif 000003
【図３】
0006471615.tif 000004
【図４】
0006471615.tif 000005
【図５】
0006471615.tif 000006
【図６】
0006471615.tif 000007
【図７】
0006471615.tif 000008
【図８】
0006471615.tif 000009
【図９】
0006471615.tif 000010
【図１０】
0006471615.tif 000011
【図１１】
0006471615.tif 000012
【図１２】
0006471615.tif 000013
【図１３】
0006471615.tif 000014
【図１４】
0006471615.tif 000015
【図１５】
0006471615.tif 000016
【図１６】
0006471615.tif 000017
【図１７】
0006471615.tif 000018
【図１８】
0006471615.tif 000019
【図１９】
0006471615.tif 000020
【図２０】
0006471615.tif 000021