(57)【要約】  特定のハードウェア上で動作するプログラムに施したチューニングの良し悪しを利用者に提示できるプログラム性能解析装置を提供するために、プログラムに関する性能情報を取得する性能情報取得手段１１と、第１のプログラムの性能情報と第１のプログラムに変更を加えた第２のプログラムの性能情報とを比較して差分情報を生成する差分情報生成手段１２と、変更の良し悪しを評価する変更評価手段１３と、を備える。
2008038389.tif 000002
【特許請求の範囲】
【請求項１】
特定のハードウェアで動作するプログラムの性能を解析するプログラム性能解析装置であって、
プログラムを実行し、該プログラムの命令に応じて動作するハードウェアから該ハードウェアの動作状況を示す性能情報を取得する性能情報取得手段と、
該性能情報取得手段を用いて取得した第１のプログラムにおける性能情報と該第１のプログラムの任意の部分に対して変更を加えた第２のプログラムにおける性能情報とを比較し、該比較結果から性能差分情報を生成する差分情報生成手段と、
該差分情報生成手段が生成した性能差分情報に基づいて、前記変更によりプログラムの性能が向上したか否かを判断して利用者に通知する変更評価手段と、
を備えるプログラム性能解析装置。
【請求項２】
前記変更評価手段は、前記性能差分情報からプログラム性能が改善されたか否かを判断する判断方法と、該判断理由と、を有する評価基準情報を記憶手段から読出して、該判断方法にしたがってプログラムの性能が向上したか否かを判断し、該判断結果とともに判断理由を表示手段に表示する、
ことを特徴とする請求項１に記載のプログラム性能解析装置。
【請求項３】
前記性能情報取得手段が性能情報を取得する毎に、該取得した性能情報を記憶部に記憶し、該性能情報を統計的に表示手段に表示するとともに、急激な変化を示す部分を強調表示する統計表示手段をさらに備える、
ことを特徴とする請求項１に記載のプログラム性能解析装置。
【請求項４】
前記性能情報取得手段が性能情報を取得する毎に、該取得した性能情報を記憶部に記憶し、該性能情報を統計的に処理することによって経験値を生成する経験値生成手段をさらに備え、
前記差分情報生成手段は、該経験値と前記第２のプログラムにおける性能情報とを比較し、該比較結果から性能差分情報を生成する、
ことを特徴とする請求項１に記載のプログラム性能解析装置。
【請求項５】
前記第１のプログラムについて、前記変更によりプログラム性能が向上した改善部を特定する性能改善部特定手段と、
該改善部におけるプログラムの特徴を抽出する特徴抽出手段と、
前記第２のプログラムについて、前記抽出した特徴と同じ特徴を有する部分の検索を実施して、プログラム性能の改善が見込まれる変更推奨部を特定する変更推奨部特定手段と、
をさらに備えることを特徴とする請求項１に記載のプログラム性能解析装置。
【請求項６】
特定のハードウェアで動作するプログラムの性能を解析するプログラム性能解析方法であって、
プログラムを実行し、該プログラムの命令に応じて動作するハードウェアから該ハードウェアの動作状況を示す性能情報を取得し、該取得した性能情報を性能情報記憶手段に記憶する性能情報取得処理と、
該性能情報取得処理により取得した第１のプログラムにおける性能情報と該第１のプログラムの任意の部分に対して変更を加えた第２のプログラムにおける性能情報とを前記性能情報記憶手段から読出して比較し、該比較結果から性能差分情報を生成し、該性能差分情報を性能差分情報記憶手段に記憶する差分情報生成処理と、
該性能差分情報記憶手段から読出した性能差分情報に基づいて、前記変更によりプログラムの性能が向上したか否かを判断して利用者に通知する変更評価処理と、
を行なうプログラム性能解析処理。
【請求項７】
前記変更評価処理は、前記性能差分情報からプログラム性能が改善されたか否かを判断する判断方法と、該判断理由と、を有する評価基準情報を記憶手段から読出して、該判断方法にしたがってプログラムの性能が向上したか否かを判断し、該判断結果とともに判断理由を表示手段に表示する、
ことを特徴とする請求項６に記載のプログラム性能解析方法。
【請求項８】
前記性能情報取得処理により性能情報を取得する毎に、該取得した性能情報を前記性能情報記憶手段に記憶し、該記憶した性能情報を統計的に表示手段に表示するとともに、急激な変化を示す部分を強調表示する統計表示処理、
をさらに行なう請求項６に記載のプログラム性能解析方法。
【請求項９】
前記性能情報取得処理により性能情報を取得する毎に、該取得した性能情報を性能情報記憶手段に記憶し、該記憶した性能情報を統計的に処理することによって経験値を生成する経験値生成処理をさらに行い、
前記差分情報生成処理では、該経験値と前記第２のプログラムにおける性能情報とを比較し、該比較結果から性能差分情報を生成する、
ことを特徴とする請求項６に記載のプログラム性能解析処理。
【請求項１０】
前記第１のプログラムについて、前記変更によりプログラム性能が向上した改善部を特定する性能改善部特定処理と、
該改善部におけるプログラムの特徴を抽出する特徴抽出処理と、
前記第２のプログラムについて、前記抽出した特徴と同じ特徴を有する部分の検索を実施して、プログラム性能の改善が見込まれる変更推奨部を特定する変更推奨部特定処理と、
をさらに行なう請求項６に記載のプログラム性能解析処理。
【請求項１１】
特定のハードウェアで動作するプログラムの性能を解析するプログラム性能解析のためのプログラムであって、
プログラムを実行し、該プログラムの命令に応じて動作するハードウェアから該ハードウェアの動作状況を示す性能情報を取得し、該取得した性能情報を性能情報記憶手段に記憶する性能情報取得処理と、
該性能情報取得処理により取得した第１のプログラムにおける性能情報と該第１のプログラムの任意の部分に対して変更を加えた第２のプログラムにおける性能情報とを前記性能情報記憶手段から読出して比較し、該比較結果から性能差分情報を生成し、該性能差分情報を性能差分情報記憶手段に記憶する差分情報生成処理と、
該性能差分情報記憶手段から読出した性能差分情報に基づいて、前記変更によりプログラムの性能が向上したか否かを判断して利用者に通知する変更評価処理と、
を情報処理装置に実行させるプログラム性能解析のためのプログラム。
【請求項１２】
前記変更評価処理は、前記性能差分情報からプログラム性能が改善されたか否かを判断する判断方法と、該判断理由と、を有する評価基準情報を記憶手段から読出して、該判断方法にしたがってプログラムの性能が向上したか否かを判断し、該判断結果とともに判断理由を表示手段に表示する、
ことを特徴とする請求項１１に記載のプログラム性能解析のためのプログラム。
【請求項１３】
前記性能情報取得処理により性能情報を取得する毎に、該取得した性能情報を前記性能情報記憶手段に記憶し、該記憶した性能情報を統計的に表示手段に表示するとともに、急激な変化を示す部分を強調表示する統計表示処理、
をさらに情報処理装置に実行させる請求項１１に記載のプログラム性能解析のためのプログラム。
【請求項１４】
前記性能情報取得処理により性能情報を取得する毎に、該取得した性能情報を性能情報記憶手段に記憶し、該記憶した性能情報を統計的に処理することによって経験値を生成する経験値生成処理をさらに情報処理装置に実行させ、
前記差分情報生成処理では、該経験値と前記第２のプログラムにおける性能情報とを比較し、該比較結果から性能差分情報を生成する、
ことを特徴とする請求項１１に記載のプログラム性能解析のためのプログラム。
【請求項１５】
前記第１のプログラムについて、前記変更によりプログラム性能が向上した改善部を特定する性能改善部特定処理と、
該改善部におけるプログラムの特徴を抽出する特徴抽出処理と、
前記第２のプログラムについて、前記抽出した特徴と同じ特徴を有する部分の検索を実施して、プログラム性能の改善が見込まれる変更推奨部を特定する変更推奨部特定処理と、
をさらに情報処理装置に実行させる請求項１１に記載のプログラム性能解析のためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特定のハードウェア上でプログラムを動作させた場合の性能を解析するプログラム性能解析装置に関する。
【背景技術】
【０００２】
情報処理装置や組み込み装置など特定のアーキテクチャを有するハードウェア上でプログラムを動作させる場合、そのハードウェアにおいて高い性能を発揮するようにプログラムのチューニングが行なわれる場合がある。また、近年では、プログラムのチューニングを支援する様々なシステムが従来から提案されている。【０００３】
特許文献１には、利用者の意図をシステムに理解させるための学習作業を行う前後の知識ベースを用いて、理解の度合いを表す正解率、網羅率、ヒット率の値を算出し、これらの値の変化をグラフを用いて画面上に表示することで、利用者の意図に最も即したチューニング方法を教示するプログラミングチューニングチューニング支援システムについて開示されている。【０００４】
しかし、使用するハードウェア上で最も性能を発揮するようにプログラムをチューニングするためには、チューニングを施したことによりプログラムの性能が向上したか否かを解析する手段が必要となる。
【特許文献１】特開平０６−２５０８３８号公報
【発明の開示】
【０００５】
本発明は、上述した問題に鑑みてなされたものであり、その解決しようとする課題は、特定のハードウェア上で動作するプログラムに施した変更の良し悪しを利用者に提示できるプログラム性能解析装置を提供することである。
【０００６】
上記課題を解決するために、本発明に係るプログラム性能解析装置は、特定のハードウェアで動作するプログラムの性能を解析するプログラム性能解析装置であって、プログラムを実行し、該プログラムの命令に応じて動作するハードウェアから該ハードウェアの動作状況を示す性能情報を取得する性能情報取得手段と、該性能情報取得手段を用いて取得した第１のプログラムにおける性能情報と該第１のプログラムの任意の部分に対して変更を加えた第２のプログラムにおける性能情報とを比較し、該比較結果から性能差分情報を生成する差分情報生成手段と、該差分情報生成手段が生成した性能差分情報に基づいて、前記変更によりプログラムの性能が向上したか否かを判断して利用者に通知する変更評価手段と、を備える。
【０００７】
本発明によると、第１のプログラムと第１のプログラムに変更を加えてできた第２のプログラムをそれぞれハードウェア上で実行してその動作状況を示す性能情報取得し、取得した性能情報の比較から性能比較情報を生成する。
【０００８】
そして、この性能比較情報に基づいて、第１のプログラムに加えた変更によりプログラムの性能が向上したか否かを判断する。したがって、プログラムに施した変更の良し悪しを利用者に提示することが可能となる。
【０００９】
その結果、当該変更によりプログラム性能が向上したとの判断結果が提示された場合、利用者は、プログラムに対して新たな変更を加えてさらなるプログラム性能の改善を図ることが可能となる。一方、当該変更によりプログラム性能は向上しないとの判断結果が提示された場合、利用者は、当該変更を元に戻し、新たな変更をプログラムに加えてプログラム性能の改善を図ることが可能となる。これにより、プログラムのチューニングを速やかに行なうことが可能となる効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施例に係るプログラム性能解析装置の動作原理を示す図である。
【図２】本発明の実施例に係るプログラム性能解析装置の構成例を示す図である。
【図３】本発明の実施例に係るプログラム性能解析装置の処理の概要を示すフローチャートである。
【図４】本発明の実施例に係るプログラム性能解析装置におけるプログラム変更に対する評価の具体的な処理を示すフローチャートである。
【図５】本発明の実施例に係る評価基準情報の構成例を示す図である。
【図６】本発明の実施例に係る判断結果の表示例を示す図である。
【図７】本発明の実施例に係る統計的表示の例を示す図である。
【図８】本発明の実施例に係る比較対象選択画面の表示例を示す図である。
【図９】本発明の実施例に係るプログラム性能解析装置による変更推奨箇所特定処理のフローチャートである。
【図１０】本発明の実施例に係るプログラム性能解析装置によるプログラムの特徴を特定する処理の概要を示すフローチャートである。
【図１１】プログラム性能解析環境、プログラム開発環境及びデバッグ環境を備えるプログラム性能解析装置の例を示す図である。
【図１２】本発明の実施例に係るプログラム性能解析装置の変形例を示すフローチャートである。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態について図１〜図１２に基づいて説明する。
図１は、本発明の実施例に係るプログラム性能解析装置１０の動作原理を示す図である。【００１２】
図１に示すプログラム性能解析装置１０は、プログラムに関する性能情報を取得する性能情報取得手段１１と、第１のプログラムの性能情報と第１のプログラムに変更を加えた第２のプログラムの性能情報とを比較して差分情報を生成する差分情報生成手段１２と、変更の良し悪しを評価する変更評価手段１３と、を備える。【００１３】
性能情報取得手段１１は、第１及び第２のプログラムを実行した際に得られる性能情報を、当該プログラムを実行しているハードウェアから取得し、例えば、性能情報記憶手段１４等に記憶する。【００１４】
差分情報生成手段１２は、第１のプログラムを実行して得る性能情報と第２のプログラムを実行して得る性能情報とを比較して差分情報を生成する。なお、当該比較は、性能情報を構成する１又は２以上の項目のうち必要に応じて決められた項目（以下、「比較項目」という）について行なう。【００１５】
変更評価手段１３は、第１のプログラムにおける性能情報と第２のプログラムにおける性能情報との差分情報から、第１のプログラムに施した変更の良し悪しを評価する。すなわち、当該変更によりプログラム性能が改善されていれば良しと判断する。そして、評価結果を表示手段等に出力する。【００１６】
ここで、本実施例に係るプログラム性能解析装置１０が解析対象とするプログラムは、機械語やアセンブリ言語等の低級言語であってもＣ言語やＪＡＶＡ（登録商標）等の高級言語であってもよい。また、インタプリタ言語であってもコンパイラ言語であってもよい。したがって、プログラムソースの状態であってもよいし、情報処理装置が実行可能な実行形式の状態でもよい。【００１７】
また、ハードウェアとは、例えば、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）及びＣＰＵを制御するファームウェアのことであるが、本実施例では、例えば、ソフトウェア上で仮想的に実現されるＣＰＵをも含む。【００１８】
また、性能情報とは、プログラム実行時におけるハードウェアの動作状況を示す情報であり、例えば、プログラムの演算量、演算効率、データ転送効率などを示す情報である。
図２は、本発明の実施例に係るプログラム性能解析装置１０の構成例を示す図である。【００１９】
図２に示すプログラム性能解析装置１０は、周辺機器や各種ソフトウェアを実行する他に本実施例に係るプログラム性能解析処理を実現するプログラムを実行するＣＰＵ２１と、プログラムを実行するために使用される揮発性のメモリ２２（例えば、ＲＡＭ）と、外部からのデータ入力手段である入力装置２３（例えば、キーボードやマウス）と、データ等を表示する出力装置２４と、評価対象のプログラムを実行させる装置（以下、「評価対象プログラム実行装置２９」という）から性能情報を取得する性能情報取得装置２５と、プログラム性能解析装置１０が動作するために必要なプログラムやデータの他に本実施例に係るプログラム性能解析処理を実現するプログラムを記録する外部記録装置２６と、メモリ２２や外部記録装置２５のデータを可搬記録媒体（例えば、フロッピイディスクやＭＯディスク、ＣＤ−ＲやＤＶＤ−Ｒなど）に出力し、あるいは可搬記録媒体からプログラムやデータ等を読み出す媒体駆動装置２７と、ネットワークに接続するネットワーク接続装置２８と、を有し、これらの装置がバスに接続されて相互にデータの受け渡しが行える構成となっている。【００２０】
本実施例に係る性能情報取得装置２５には、評価対象プログラム実行装置２９に実装されているＣＰＵ（評価対象のプログラムを実行するＣＰＵ）からＣＰＵの動作状況を示す情報を取得することが可能な評価ボードを使用する。なお、評価ボードは様々なものが提供されているので、評価対象プログラム実行装置２９に合わせて最適なものを使用すればよい。【００２１】
なお、図１で説明したようにソフトウェア上で仮想的に実現されたハードウェア上で評価対象のプログラムを実行させ、当該ハードウェアから性能情報を取得する場合には、性能情報取得装置２５の代りにＣＰＵ２１が性能情報を取得すればよい。【００２２】
以上に説明した構成において、性能情報取得手段１１は、ＣＰＵ２１及び必要に応じて性能情報取得装置２５が所定のプログラム命令にしたがって動作することによって実現される。また、差分情報生成手段１２及び変更評価手段１３は、ＣＰＵ２１が所定のプログラム命令にしたがって動作することによって実現される。【００２３】
図３は、本発明の実施例に係るプログラム性能解析装置１０の処理の概要を示すフローチャートである。
ステップＳ３０１において、評価対象のプログラムであって変更前のプログラム（以下、「第１のプログラム」という）を評価対象プログラム実行装置２９上で実行開始する。プログラムの実行が開始されると、プログラム性能解析装置１０は、処理をステップＳ３０２に移行する。【００２４】
ステップＳ３０２において、プログラム性能解析装置１０は、プログラム命令にしたがって動作中の評価対象プログラム実行装置２９に係るＣＰＵから性能情報（ＰＡ（Ｐｅｒｆｏｒｍａｎｃｅ  Ａｎａｌｙｚｅｒ）情報）を取得する。【００２５】
ここで、本実施例では性能情報として、（１）１サイクル当りに実行したＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）数、（２）ＶＬＩＷの平均命令数、（３）パイプラインのストールサイクル数、（４）実行命令数、（５）ロード／ストア命令実行数、（６）データキャッシュミス率、（７）命令キャッシュミス率、（８）分岐予測ミス率等を評価対象プログラム実行装置２９に係るＣＰＵから取得する。なお、全体処理を簡単にするために、性能情報として、例えば、有効・無効処理部分の実行サイクル数のみを使用してもよい。【００２６】
第１のプログラムの実行が終了すると、処理をステップＳ３０３に移行する。そして、ステップＳ３０１と同様に、評価対象のプログラムであって変更後のプログラム（以下、「第２のプログラム」という）を評価対象プログラム実行装置２９上で実行開始する。プログラムの実行が開始されると、プログラム性能解析装置１０は、処理をステップＳ３０４に移行する。【００２７】
ステップＳ３０４において、プログラム性能解析装置１０は、プログラム命令にしたがって動作中の評価対象プログラム実行装置２９に係るＣＰＵから性能情報（ＰＡ情報）を取得する。そして、第２のプログラムの実行が終了すると、処理をステップＳ３０５に移行する。【００２８】
ステップＳ３０５において、プログラム性能解析装置１０は、ステップＳ３０２で取得した第１のプログラムにおける性能情報と、ステップＳ３０４で取得した第２のプログラムにおける性能情報と、を比較して差分情報を生成する。そして、例えば、１サイクル当りに実行したＶＬＩＷ数が増加している場合には、プログラム変更によりプログラム性能が向上したと判断する。【００２９】
ステップＳ３０６において、プログラム性能解析装置１０は、ステップＳ３０５の評価結果を出力装置２４に出力して表示する。そして、ステップＳ３０７に移行して処理を終了する。【００３０】
図４は、図３に示したプログラム変更の評価（ステップＳ３０５）の具体的な処理を示すフローチャートである。
図３に示したステップＳ３０１〜Ｓ３０４の処理によって、第１及び第２のプログラムにおける性能情報を取得すると、プログラム性能解析装置１０は、処理をステップＳ４００からＳ４０１に移行する。【００３１】
ステップＳ４０１において、プログラム性能解析装置１０は、性能情報を構成する各比較項目について比較を行なって差分情報を生成する。比較処理が終了すると、プログラム性能解析装置１０は、処理をステップＳ４０２に移行する。【００３２】
ここで、本実施例に係る差分情報とは、各比較項目における単純な差の情報である。例えば、比較項目（１）の差分情報とは、第２のプログラムにおける（１）１サイクルあたりに実行したＶＬＩＷ数から第１のプログラムにおける（１）１サイクルあたりに実行したＶＬＩＷ数を引いた値である。【００３３】
ステップＳ４０２において、プログラム性能解析装置１０は、例えば、メモリ２２上に展開されている評価基準情報５０を参照する。そして、各比較項目における判断方法と判断理由とを取得し、処理をステップＳ４０３に移行する。【００３４】
ここで、図５に本発明の実施例に係る評価基準情報５０の構成例を示す。図５に示すように、本実施例に係る評価基準情報５０は、比較項目と判断方法と判断理由とで構成されている。【００３５】
比較項目には、図３に示したステップＳ３０２及びＳ３０４で取得した性能情報のうち、（１）１サイクルあたりに実行したＶＬＩＷ数、（２）ＶＬＩＷの平均命令数、（３）パイプラインのストールサイクル数、（４）実行命令数、（５）ロード／ストア命令実行数、（６）データキャッシュミス率、（７）命令キャッシュミス率、及び（８）分岐予測ミス率を使用している。【００３６】
判断方法は、比較項目（１）〜（８）がどのような場合にプログラム性能が改善されたと判断するかを示している。例えば、第１のプログラムにおける（１）１サイクルあたりに実行したＶＬＩＷ数と比較して、第２のプログラムにおける（１）１サイクルあたりに実行したＶＬＩＷ数の方が「大きい」場合、すなわち、ステップＳ４０１で生成した（１）１サイクルあたりに実行したＶＬＩＷ数の差分情報が正の値の場合に、プログラム性能が改善されたと判断する。【００３７】
同様に、第１のプログラムにおける（３）パイプラインのストールサイクル数と比較して、第２のプログラムにおける（３）パイプラインのストールサイクル数の方が「小さい」場合、すなわち、ステップＳ４０１で生成した（３）パイプラインのストールサイクル数の差分情報が負の場合に、プログラム性能が改善されたと判断する。【００３８】
判断理由は、比較項目（１）〜（８）が改良した理由を示している。例えば、（１）１サイクルあたりに実行したＶＬＩＷ数が大きくなったのは、プログラムの変更により命令の並列度が向上したからである。【００３９】
ステップＳ４０３において、プログラム性能解析装置１０は、各比較項目について、プログラム性能が改善された項目（以下、「性能改善項目」という）を抽出する。そして、例えば、性能改善項目が全体の半数以上である場合に、全体としてプログラム性能が改善されたと判断する。また、各比較項目を点数化して重み付けを行なった上で、性能改善項目の総和を算出し、所定の点数以上となった場合にプログラム性能が改善されてと判断しても良い。【００４０】
評価が決定すると、プログラム性能解析装置１０は、ステップＳ４０４に移行して評価処理を終了する。その後、プログラム性能解析装置１０は、図３に示したステップＳ３０６に処理を移行し、評価結果を出力装置２４に表示する。【００４１】
図６は、本発明の実施例に係る判断結果の表示例を示す図である。
図６に示す表示例では、判断結果と判断理由を出力装置２４に表示する場合の例を示している。「判断結果」には、図４のステップＳ４０３で判断した結果が表示されている。また、「判断理由」には、性能改善項目のうち最も改善された項目の判断理由を評価基準情報５０から取得して表示している。ただし、必要に応じて、複数の判断理由を比較項目毎に表示してもよい。【００４２】
さらに、本実施例に係るプログラム性能解析装置１０は、図３及び４に示したプログラム性能解析処理を行なう毎に、取得した性能情報（又は、各性能情報の変化の割合）やプログラム修正をデータベースとして記憶しておき、利用者の指示により又は必要に応じて、当該性能情報を統計的に表示してもよい。【００４３】
図７は、本発明の実施例に係る統計的表示の例を示す図である。図に示す統計的表示の横軸は測定回数、縦軸は測定値である。測定回数は、図３及び図４に示したプログラム性能解析処理によって性能情報を取得した回数を示す。【００４４】
ここで、本実施例に係る統計的表示では、プログラム性能解析装置１０が急激に測定値の変化した箇所を検出して強調表示を行なっている。図７には、強調表示として一点鎖線で該当箇所を囲んでいる場合を示している。ただし、これに限定する趣旨ではなく、該当の色を変えるなど必要に応じた強調を行なえばよい。【００４５】
また、本実施例に係る統計的表示は、図７に示した測定回数毎に測定値を表示するだけでなく、例えば、平均や分散等の統計情報を表示しても良い。
以上の説明において、同一のプログラムに対して複数通りの変更を施す場合も考えられる。例えば、同一のプログラムに対して変更Ａを加えた場合と、変更Ｂを加えた場合と、変更Ｃを加えた場合などである。この場合、例えば、図３において、各プログラムを実行して性能情報を取得した後、ステップＳ３０５において、図８に示す比較対象選択画面を表示して、利用者に比較対象を選択させ、当該選択された性能情報についてステップＳ３０５及びＳ３０６の処理を実施すればよい。【００４６】
図８は、本発明の実施例に係る比較対象選択画の表示例を示す図である。図８に示す比較対象選択画面は、図３に示したステップＳ３０３及びＳ３０４の処理によって、同一のプログラムに対して異なる修正が加えられた３つのプログラムについての性能情報（図に示す性能情報１〜３）を取得した場合の例を示している。【００４７】
利用者が入力装置２３（例えば、マウス）等を使用して□部分をクリックすると、プログラム性能解析装置１０は、当該クリックされた性能情報を取得して比較対象とする。そして、その性能情報の□部分に■を表示する。図８では、性能情報１と性能情報２が選択された場合を示している。【００４８】
以上に説明した本実施例に係るプログラム性能解析装置１０は、必要に応じて、図３に示した処理の終了の後、以下に示すプログラムに対する変更推奨箇所を特定する処理も行なう。【００４９】
図９は、本発明の実施例に係るプログラム性能解析装置１０による変更推奨箇所特定処理のフローチャートである。
ステップＳ９０１において、プログラム性能解析装置１０は、第１のプログラムについて、プログラムの変更によりプログラム性能が向上したブロックを特定する。例えば、プログラム性能解析装置１０は、差分情報を参照し、プログラム性能が改善された処理部を特定する。そして、当該処理の処理命令を含むブロックを特定する。【００５０】
ステップＳ９０２において、プログラム性能解析装置１０は、ステップＳ９０１で特定したブロックの特徴を抽出する。ブロックの特徴を抽出する方法については、図１０で後述する。特徴の抽出が終了すると、プログラム性能解析装置１０は、処理をステップＳ９０３に移行する。【００５１】
ステップＳ９０３において、プログラム性能解析装置１０は、第２のプログラム全体について、ブロック毎に特徴を抽出する。そして、ステップＳ９０２で抽出した特徴と同じ特徴を有するブロックを検索する。【００５２】
ステップＳ９０４において、プログラム性能解析装置１０は、変更を施すことによりプログラム性能の改善が見込まれる変更推奨箇所として、ステップＳ９０３で検索したブロックを出力装置２４に表示して処理を終了する（ステップＳ９０５）。【００５３】
ここで、ブロックとは、例えば、１又は２以上の演算処理を行なう命令群のことであり、例えば、ＦＯＲ文における一連のネスト構造や、ＩＦ文における一連のネスト構造を１ブロックとすればよい。【００５４】
図１０は、本発明の実施例に係るプログラム性能解析装置１０によるプログラムの特徴を特定する処理の概要を示すフローチャートである。
ステップＳ１００１において、プログラム性能解析装置１０は、ブロック毎に、プログラムから制御構造（例えば、ＩＦ文やＦＯＲ文などのネスト構造）を抽出する。そして、処理をステップＳ１００２に移行する。【００５５】
ステップＳ１００２において、プログラム性能解析装置１０は、ブロック毎に、データの依存関係を解析した後、当該データにおけるデータフローを解析する。ここで、データフローとは、例えば、所定のデータに対する一連の処理の流れである。例えば、データａが、「保存先Ａ」から読出され、「プロセスＢ」でデータｂに加工され、「保存先Ｃ」に保存された、といった情報である。【００５６】
ステップＳ１００３において、プログラム性能解析装置１０は、プログラムをブロック毎に区分し、処理をステップＳ１００４に移行する。
ステップＳ１００４において、プログラム性能解析装置１０は、例えば、制御構造とデータフローについての複数の特徴パターンが予め記憶された特徴情報を外部記憶装置２６から読出す。そして、ブロック毎に、特徴パターンと、ステップＳ１００１で抽出した制御構造及びステップＳ１００２で抽出したデータフローと、を比較する。そして、両者が一致した場合に当該ブロックは当該特徴パターンを特徴に持つと判断する。【００５７】
特徴の抽出が終了すると、プログラム性能解析装置１０は、ステップＳ１００５に移行して処理を終了する。
以上に説明した本発明の実施例に係るプログラム性能解析装置１０は、プログラムの変更等を行なうプログラム開発環境やプログラム実行デバッグ環境をさらに備えてもよい。【００５８】
図１１は、プログラム性能解析環境１１０１、プログラム開発環境１１０２及びデバッグ環境１１０３を備えるプログラム性能解析装置１１００の例を示す図である。
プログラム性能解析環境１１０１は、図３及び図４に示すプログラム性能解析処理を行なう。すなわち、プログラム実行時に性能情報を取得し、取得した性能情報から差分情報を生成し、差分情報からプログラムに施した変更の良し悪しを評価する。そして、評価結果を理由とともに出力装置２４に表示する。【００５９】
プログラム開発環境１１０２は、例えば、プログラムソースに変更を加え、変更後のプログラムソースをコンパイルしてオブジェクトファイル等を生成し、さらに、実行に必要なオブジェクトファイルをリンクして実行形式のデータ（実行ファイル）を生成する。【００６０】
デバッグ環境１１０３は、プログラム開発環境１１０２で生成した実行ファイルをメモリにロードして実行し、さらに、デバッグを行なうデバッグ手段を提供する。
これらプログラム性能解析環境１１０１、プログラム開発環境１１０２及びデバッグ環境１１０３を連動して実行可能とすることにより、利用者は、一連の作業を円滑に行なうことが可能となる。【００６１】
図１２は、本発明の実施例に係るプログラム性能解析装置１０の変形例を示すフローチャートである。
ステップＳ１２０１において、評価対象のプログラムを評価対象プログラム実行装置２９上で実行開始する。プログラムの実行が開始されると、プログラム性能解析装置１０は、処理をステップＳ１２０２に移行する。【００６２】
ステップＳ１２０２において、プログラム性能解析装置１０は、プログラム命令にしたがって動作中の評価対象プログラム実行装置２９に係るＣＰＵから性能情報を取得する。なお、性能情報については、図３で説明したものを使用する。【００６３】
プログラムの実行が終了すると、プログラム性能解析装置１０は、処理をステップＳ１２０３に移行する。そして、過去に取得して外部記憶装置２６等に記憶されている性能情報（以下、「旧性能情報」という）から経験値を算出する。【００６４】
経験値には、比較項目毎に、旧性能情報の（ａ）平均値、（ｂ）最大値、（ｃ）最小値又は（ｄ）総合評価値のいずれかを必要に応じて使用する。
ここで、ｎ回目に測定された性能情報（比較項目）の値をＭｎとし、Ｍｎに対する重み係数をＣｎとすると、
（ａ）平均値は、（１）式で求めることができる。【００６５】
Ｃ１×Ｍ１＋Ｃ２×Ｍ２＋Ｃ３×Ｍ３＋・・・＋Ｃｎ×Ｍｎ            ・・・  （１）
ただし、Ｃｎ＝１／ｎ
（ｂ）最大値は、（２）式で求めることができる。【００６６】
ＭＡＸ（Ｃ１×Ｍ１，Ｃ２×Ｍ２，Ｃ３×Ｍ３，・・・，Ｃｎ×Ｍｎ）      ・・・  （２）
ただし、Ｃｎ＝１
（ｃ）最小値は、（３）式で求めることができる。【００６７】
ＭＩＮ（Ｃ１×Ｍ１，Ｃ２×Ｍ２，Ｃ３×Ｍ３，・・・，Ｃｎ×Ｍｎ）      ・・・  （３）
ただし、Ｃｎ＝１
なお、ＭＡＸ（Ａ、Ｂ、・・・）は、Ａ、Ｂ、・・・のうち最大値を算出する関数を示し、ＭＩＮ（Ａ、Ｂ、・・・）は、Ａ、Ｂ、・・・のうち最小値を算出する関数を示す。【００６８】
（ｄ）総合評価値は、重要度をＤ１、Ｄ２、Ｄ３、・・・Ｄｎとすると、（４）で求めることができる。
Ｄ１×Ｍ１＋Ｄ２×Ｍ２＋Ｄ３×Ｍ３＋・・・＋Ｄｎ×Ｍｎ              ・・・  （４）
ここで、重要度とは、性能情報Ｍ１〜Ｍｎに対する重み付けの度合いである。例えば、性能情報Ｍ１〜Ｍｎのうちプログラム性能が改善されたと評価された時の性能情報Ｍｘは重要度大であると考え、その性能情報Ｍｘに対する重み係数Ｄｘ（初期値は１）を例えば１．５倍にする。【００６９】
また、前回測定した性能情報との差分（例えば、Ｍ１とＭ２の差分）の割合が大きい性能情報Ｍｘが重要度大であると考え、その性能情報Ｍｘに対する重み係数Ｄｘ（初期値は１）を例えば１．５倍としてもよい。【００７０】
以上に説明した経験値の算出が終了すると、プログラム性能解析装置１０は、処理をステップＳ１２０４に移行する。そして、ステップＳ１２０２で取得した性能情報とステップＳ１２０３で算出した経験値とを比較して差分情報を生成する。なお、本実施例に係る差分情報は、例えば、評価基準情報５０にある各比較項目における単純な差の情報である。【００７１】
差分情報を生成すると、プログラム性能解析装置１０は、処理をステップＳ１２０５に移行する。そして、プログラム性能解析装置１０は、例えば、メモリ２２上に展開されている評価基準情報５０を参照し、各比較項目における判断方法と判断理由とを取得する。【００７２】
さらに、ステップＳ１２０６において、プログラム性能解析装置１０は、各比較項目について、ステップＳ１２０４で生成した差分情報から性能改善項目を抽出する。そして、例えば、性能改善項目が全体の半数以上の場合に、全体としてプログラム性能が改善されたと判断する。【００７３】
評価が決定すると、プログラム性能解析装置１０は、処理をステップＳ１２０７に移行する。そして、評価結果を出力装置２４に表示して処理を終了する。
以上に説明したように、本実施例に係るプログラム性能解析装置は、単独の性能情報を利用したプログラム性能の評価の困難性に鑑み、第１のプログラムと第２のプログラムのように複数のプログラムにおける性能情報をハードウェアから取得して比較することによって（ステップＳ４０１、Ｓ１２０４）、容易にプログラム性能の評価を行なうことが可能となる。【００７４】
また、本実施例に係るプログラム性能解析装置は、第１のプログラムに変更を加えて生成した第２のプログラムのプログラム性能が、当該変更により向上したか否かを判断し（ステップＳ３０５、Ｓ１２０６）、判断結果（変更の良し悪し）を利用者に提示する（ステップＳ３０６、Ｓ１２０７）。【００７５】
その結果、変更によりプログラム性能が良くなったとの判断結果が提示されれば、利用者は、さらにチューニングを行なえばよく、変更によりプログラム性能が悪くなったとの判断結果が提示されれば、変更を元に戻し、改めてチューニングを行なうことが可能となる。したがって、プログラムのチューニングを速やかに行なうことが可能となる。【００７６】
また、判断結果について判断理由が示されるので（図６）、利用者はプログラムに対する変更の効果を認識することが可能となる。
また、変更推奨箇所が提示されるので（Ｓ９０４）、利用者は、プログラム性能の向上に効果のある変更をプログラムに施すことが可能となり、プログラムのチューニングをより速やかに行なうことが可能となる。【００７７】
さらに、経験値を用いてプログラム性能の判断を行なうことにより（ステップＳ１２０３〜Ｓ１２０６）、チューニング実績を積むほどチューニング効果を得ることができる効果を奏する。
【図１】
2008038389.tif 000003
【図２】
2008038389.tif 000004
【図３】
2008038389.tif 000005
【図４】
2008038389.tif 000006
【図５】
2008038389.tif 000007
【図６】
2008038389.tif 000008
【図７】
2008038389.tif 000009
【図８】
2008038389.tif 000010
【図９】
2008038389.tif 000011
【図１０】
2008038389.tif 000012
【図１１】
2008038389.tif 000013
【図１２】
2008038389.tif 000014
【手続補正書】
【提出日】平成20年11月12日(2008.11.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
特定のハードウェアで動作するプログラムの性能を解析するプログラム性能解析装置であって、
プログラムを実行し、該プログラムの命令に応じて動作するハードウェアから該ハードウェアの動作状況を示す性能情報を取得する性能情報取得手段と、
該性能情報取得手段を用いて取得した第１のプログラムにおける性能情報と該第１のプログラムの任意の部分に対して変更を加えた第２のプログラムにおける性能情報とを比較し、該比較結果から性能差分情報を生成する差分情報生成手段と、
該差分情報生成手段が生成した性能差分情報に基づいて、前記変更によりプログラムの性能が向上したか否かを判断して利用者に通知する変更評価手段と、
を備えるプログラム性能解析装置。
【請求項２】
前記変更評価手段は、前記性能差分情報からプログラム性能が改善されたか否かを判断する判断方法と、該判断理由と、を有する評価基準情報を記憶手段から読出して、該判断方法にしたがってプログラムの性能が向上したか否かを判断し、該判断結果とともに判断理由を表示手段に表示する、
ことを特徴とする請求項１に記載のプログラム性能解析装置。
【請求項３】
前記性能情報取得手段が性能情報を取得する毎に、該取得した性能情報を記憶部に記憶し、該性能情報を統計的に表示手段に表示するとともに、急激な変化を示す部分を強調表示する統計表示手段をさらに備える、
ことを特徴とする請求項１に記載のプログラム性能解析装置。
【請求項４】
前記性能情報取得手段が性能情報を取得する毎に、該取得した性能情報を記憶部に記憶し、該性能情報を統計的に処理することによって経験値を生成する経験値生成手段をさらに備え、
前記差分情報生成手段は、該経験値と前記第２のプログラムにおける性能情報とを比較し、該比較結果から性能差分情報を生成する、
ことを特徴とする請求項１に記載のプログラム性能解析装置。
【請求項５】
前記第１のプログラムについて、前記変更によりプログラム性能が向上した改善部を特定する性能改善部特定手段と、
該改善部におけるプログラムの特徴を抽出する特徴抽出手段と、
前記第２のプログラムについて、前記抽出した特徴と同じ特徴を有する部分の検索を実施して、プログラム性能の改善が見込まれる変更推奨部を特定する変更推奨部特定手段と、
をさらに備えることを特徴とする請求項１に記載のプログラム性能解析装置。
【請求項６】
特定のハードウェアで動作するプログラムの性能を解析するプログラム性能解析方法であって、
プログラムを実行し、該プログラムの命令に応じて動作するハードウェアから該ハードウェアの動作状況を示す性能情報を取得し、該取得した性能情報を性能情報記憶手段に記憶する性能情報取得処理と、
該性能情報取得処理により取得した第１のプログラムにおける性能情報と該第１のプログラムの任意の部分に対して変更を加えた第２のプログラムにおける性能情報とを前記性能情報記憶手段から読出して比較し、該比較結果から性能差分情報を生成し、該性能差分情報を性能差分情報記憶手段に記憶する差分情報生成処理と、
該性能差分情報記憶手段から読出した性能差分情報に基づいて、前記変更によりプログラムの性能が向上したか否かを判断して利用者に通知する変更評価処理と、
を行なうプログラム性能解析処理。
【請求項７】
前記性能情報取得処理により性能情報を取得する毎に、該取得した性能情報を性能情報記憶手段に記憶し、該記憶した性能情報を統計的に処理することによって経験値を生成する経験値生成処理をさらに行い、
前記差分情報生成処理では、該経験値と前記第２のプログラムにおける性能情報とを比較し、該比較結果から性能差分情報を生成する、
ことを特徴とする請求項６に記載のプログラム性能解析処理。
【請求項８】
前記第１のプログラムについて、前記変更によりプログラム性能が向上した改善部を特定する性能改善部特定処理と、
該改善部におけるプログラムの特徴を抽出する特徴抽出処理と、
前記第２のプログラムについて、前記抽出した特徴と同じ特徴を有する部分の検索を実施して、プログラム性能の改善が見込まれる変更推奨部を特定する変更推奨部特定処理と、
をさらに行なう請求項６に記載のプログラム性能解析処理。
【請求項９】
特定のハードウェアで動作するプログラムの性能を解析するプログラム性能解析のためのプログラムであって、
プログラムを実行し、該プログラムの命令に応じて動作するハードウェアから該ハードウェアの動作状況を示す性能情報を取得し、該取得した性能情報を性能情報記憶手段に記憶する性能情報取得処理と、
該性能情報取得処理により取得した第１のプログラムにおける性能情報と該第１のプログラムの任意の部分に対して変更を加えた第２のプログラムにおける性能情報とを前記性能情報記憶手段から読出して比較し、該比較結果から性能差分情報を生成し、該性能差分情報を性能差分情報記憶手段に記憶する差分情報生成処理と、
該性能差分情報記憶手段から読出した性能差分情報に基づいて、前記変更によりプログラムの性能が向上したか否かを判断して利用者に通知する変更評価処理と、
を情報処理装置に実行させるプログラム性能解析のためのプログラム。
【請求項１０】
前記第１のプログラムについて、前記変更によりプログラム性能が向上した改善部を特定する性能改善部特定処理と、
該改善部におけるプログラムの特徴を抽出する特徴抽出処理と、
前記第２のプログラムについて、前記抽出した特徴と同じ特徴を有する部分の検索を実施して、プログラム性能の改善が見込まれる変更推奨部を特定する変更推奨部特定処理と、
をさらに情報処理装置に実行させる請求項９に記載のプログラム性能解析のためのプログラム。
【国際調査報告】
2008038389.tif 000015
2008038389.tif 000016
2008038389.tif 000017
2008038389.tif 000018