[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP4983801B2 - プログラム性能解析装置 - Google Patents

プログラム性能解析装置 Download PDF

Info

Publication number
JP4983801B2
JP4983801B2 JP2008536267A JP2008536267A JP4983801B2 JP 4983801 B2 JP4983801 B2 JP 4983801B2 JP 2008536267 A JP2008536267 A JP 2008536267A JP 2008536267 A JP2008536267 A JP 2008536267A JP 4983801 B2 JP4983801 B2 JP 4983801B2
Authority
JP
Japan
Prior art keywords
program
performance
information
performance information
change
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008536267A
Other languages
English (en)
Other versions
JPWO2008038389A1 (ja
Inventor
輝彦 上方
敦浩 須賀
茂 木村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2008038389A1 publication Critical patent/JPWO2008038389A1/ja
Application granted granted Critical
Publication of JP4983801B2 publication Critical patent/JP4983801B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3428Benchmarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、特定のハードウェア上でプログラムを動作させた場合の性能を解析するプログラム性能解析装置に関する。
情報処理装置や組み込み装置など特定のアーキテクチャを有するハードウェア上でプログラムを動作させる場合、そのハードウェアにおいて高い性能を発揮するようにプログラムのチューニングが行なわれる場合がある。また、近年では、プログラムのチューニングを支援する様々なシステムが従来から提案されている。
特許文献1には、利用者の意図をシステムに理解させるための学習作業を行う前後の知識ベースを用いて、理解の度合いを表す正解率、網羅率、ヒット率の値を算出し、これらの値の変化をグラフを用いて画面上に表示することで、利用者の意図に最も即したチューニング方法を教示するプログラミングチューニングチューニング支援システムについて開示されている。
しかし、使用するハードウェア上で最も性能を発揮するようにプログラムをチューニングするためには、チューニングを施したことによりプログラムの性能が向上したか否かを解析する手段が必要となる。
特開平06−250838号公報
本発明は、上述した問題に鑑みてなされたものであり、その解決しようとする課題は、特定のハードウェア上で動作するプログラムに施した変更の良し悪しを利用者に提示できるプログラム性能解析装置を提供することである。
上記課題を解決するために、本発明に係るプログラム性能解析装置は、特定のハードウェアで動作するプログラムの性能を解析するプログラム性能解析装置であって、プログラムを実行し、該プログラムの命令に応じて動作するハードウェアから該ハードウェアの動作状況を示す性能情報を取得する性能情報取得手段と、該性能情報取得手段を用いて取得した第1のプログラムにおける性能情報と該第1のプログラムの任意の部分に対して変更を加えた第2のプログラムにおける性能情報とを比較し、該比較結果から性能差分情報を生成する差分情報生成手段と、該差分情報生成手段が生成した性能差分情報に基づいて、前記変更によりプログラムの性能が向上したか否かを判断して利用者に通知する変更評価手段と、を備える。
本発明によると、第1のプログラムと第1のプログラムに変更を加えてできた第2のプログラムをそれぞれハードウェア上で実行してその動作状況を示す性能情報取得し、取得した性能情報の比較から性能比較情報を生成する。
そして、この性能比較情報に基づいて、第1のプログラムに加えた変更によりプログラムの性能が向上したか否かを判断する。したがって、プログラムに施した変更の良し悪しを利用者に提示することが可能となる。
その結果、当該変更によりプログラム性能が向上したとの判断結果が提示された場合、利用者は、プログラムに対して新たな変更を加えてさらなるプログラム性能の改善を図ることが可能となる。一方、当該変更によりプログラム性能は向上しないとの判断結果が提示された場合、利用者は、当該変更を元に戻し、新たな変更をプログラムに加えてプログラム性能の改善を図ることが可能となる。これにより、プログラムのチューニングを速やかに行なうことが可能となる効果を奏する。
本発明の実施例に係るプログラム性能解析装置の動作原理を示す図である。 本発明の実施例に係るプログラム性能解析装置の構成例を示す図である。 本発明の実施例に係るプログラム性能解析装置の処理の概要を示すフローチャートである。 本発明の実施例に係るプログラム性能解析装置におけるプログラム変更に対する評価の具体的な処理を示すフローチャートである。 本発明の実施例に係る評価基準情報の構成例を示す図である。 本発明の実施例に係る判断結果の表示例を示す図である。 本発明の実施例に係る統計的表示の例を示す図である。 本発明の実施例に係る比較対象選択画面の表示例を示す図である。 本発明の実施例に係るプログラム性能解析装置による変更推奨箇所特定処理のフローチャートである。 本発明の実施例に係るプログラム性能解析装置によるプログラムの特徴を特定する処理の概要を示すフローチャートである。 プログラム性能解析環境、プログラム開発環境及びデバッグ環境を備えるプログラム性能解析装置の例を示す図である。 本発明の実施例に係るプログラム性能解析装置の変形例を示すフローチャートである。
以下、本発明の実施の形態について図1〜図12に基づいて説明する。
図1は、本発明の実施例に係るプログラム性能解析装置10の動作原理を示す図である。
図1に示すプログラム性能解析装置10は、プログラムに関する性能情報を取得する性能情報取得手段11と、第1のプログラムの性能情報と第1のプログラムに変更を加えた第2のプログラムの性能情報とを比較して差分情報を生成する差分情報生成手段12と、変更の良し悪しを評価する変更評価手段13と、を備える。
性能情報取得手段11は、第1及び第2のプログラムを実行した際に得られる性能情報を、当該プログラムを実行しているハードウェアから取得し、例えば、性能情報記憶手段14等に記憶する。
差分情報生成手段12は、第1のプログラムを実行して得る性能情報と第2のプログラムを実行して得る性能情報とを比較して差分情報を生成する。なお、当該比較は、性能情報を構成する1又は2以上の項目のうち必要に応じて決められた項目(以下、「比較項目」という)について行なう。
変更評価手段13は、第1のプログラムにおける性能情報と第2のプログラムにおける性能情報との差分情報から、第1のプログラムに施した変更の良し悪しを評価する。すなわち、当該変更によりプログラム性能が改善されていれば良しと判断する。そして、評価結果を表示手段等に出力する。
ここで、本実施例に係るプログラム性能解析装置10が解析対象とするプログラムは、機械語やアセンブリ言語等の低級言語であってもC言語やJAVA(登録商標)等の高級言語であってもよい。また、インタプリタ言語であってもコンパイラ言語であってもよい。したがって、プログラムソースの状態であってもよいし、情報処理装置が実行可能な実行形式の状態でもよい。
また、ハードウェアとは、例えば、プログラムを実行するCPU(Central Processing Unit)及びCPUを制御するファームウェアのことであるが、本実施例では、例えば、ソフトウェア上で仮想的に実現されるCPUをも含む。
また、性能情報とは、プログラム実行時におけるハードウェアの動作状況を示す情報であり、例えば、プログラムの演算量、演算効率、データ転送効率などを示す情報である。
図2は、本発明の実施例に係るプログラム性能解析装置10の構成例を示す図である。
図2に示すプログラム性能解析装置10は、周辺機器や各種ソフトウェアを実行する他に本実施例に係るプログラム性能解析処理を実現するプログラムを実行するCPU21と、プログラムを実行するために使用される揮発性のメモリ22(例えば、RAM)と、外部からのデータ入力手段である入力装置23(例えば、キーボードやマウス)と、データ等を表示する出力装置24と、評価対象のプログラムを実行させる装置(以下、「評価対象プログラム実行装置29」という)から性能情報を取得する性能情報取得装置25と、プログラム性能解析装置10が動作するために必要なプログラムやデータの他に本実施例に係るプログラム性能解析処理を実現するプログラムを記録する外部記録装置26と、メモリ22や外部記録装置25のデータを可搬記録媒体(例えば、フロッピイディスクやMOディスク、CD−RやDVD−Rなど)に出力し、あるいは可搬記録媒体からプログラムやデータ等を読み出す媒体駆動装置27と、ネットワークに接続するネットワーク接続装置28と、を有し、これらの装置がバスに接続されて相互にデータの受け渡しが行える構成となっている。
本実施例に係る性能情報取得装置25には、評価対象プログラム実行装置29に実装されているCPU(評価対象のプログラムを実行するCPU)からCPUの動作状況を示す情報を取得することが可能な評価ボードを使用する。なお、評価ボードは様々なものが提供されているので、評価対象プログラム実行装置29に合わせて最適なものを使用すればよい。
なお、図1で説明したようにソフトウェア上で仮想的に実現されたハードウェア上で評価対象のプログラムを実行させ、当該ハードウェアから性能情報を取得する場合には、性能情報取得装置25の代りにCPU21が性能情報を取得すればよい。
以上に説明した構成において、性能情報取得手段11は、CPU21及び必要に応じて性能情報取得装置25が所定のプログラム命令にしたがって動作することによって実現される。また、差分情報生成手段12及び変更評価手段13は、CPU21が所定のプログラム命令にしたがって動作することによって実現される。
図3は、本発明の実施例に係るプログラム性能解析装置10の処理の概要を示すフローチャートである。
ステップS301において、評価対象のプログラムであって変更前のプログラム(以下、「第1のプログラム」という)を評価対象プログラム実行装置29上で実行開始する。プログラムの実行が開始されると、プログラム性能解析装置10は、処理をステップS302に移行する。
ステップS302において、プログラム性能解析装置10は、プログラム命令にしたがって動作中の評価対象プログラム実行装置29に係るCPUから性能情報(PA(Performance Analyzer)情報)を取得する。
ここで、本実施例では性能情報として、(1)1サイクル当りに実行したVLIW(Very Long Instruction Word)数、(2)VLIWの平均命令数、(3)パイプラインのストールサイクル数、(4)実行命令数、(5)ロード/ストア命令実行数、(6)データキャッシュミス率、(7)命令キャッシュミス率、(8)分岐予測ミス率等を評価対象プログラム実行装置29に係るCPUから取得する。なお、全体処理を簡単にするために、性能情報として、例えば、有効・無効処理部分の実行サイクル数のみを使用してもよい。
第1のプログラムの実行が終了すると、処理をステップS303に移行する。そして、ステップS301と同様に、評価対象のプログラムであって変更後のプログラム(以下、「第2のプログラム」という)を評価対象プログラム実行装置29上で実行開始する。プログラムの実行が開始されると、プログラム性能解析装置10は、処理をステップS304に移行する。
ステップS304において、プログラム性能解析装置10は、プログラム命令にしたがって動作中の評価対象プログラム実行装置29に係るCPUから性能情報(PA情報)を取得する。そして、第2のプログラムの実行が終了すると、処理をステップS305に移行する。
ステップS305において、プログラム性能解析装置10は、ステップS302で取得した第1のプログラムにおける性能情報と、ステップS304で取得した第2のプログラムにおける性能情報と、を比較して差分情報を生成する。そして、例えば、1サイクル当りに実行したVLIW数が増加している場合には、プログラム変更によりプログラム性能が向上したと判断する。
ステップS306において、プログラム性能解析装置10は、ステップS305の評価結果を出力装置24に出力して表示する。そして、ステップS307に移行して処理を終了する。
図4は、図3に示したプログラム変更の評価(ステップS305)の具体的な処理を示すフローチャートである。
図3に示したステップS301〜S304の処理によって、第1及び第2のプログラムにおける性能情報を取得すると、プログラム性能解析装置10は、処理をステップS400からS401に移行する。
ステップS401において、プログラム性能解析装置10は、性能情報を構成する各比較項目について比較を行なって差分情報を生成する。比較処理が終了すると、プログラム性能解析装置10は、処理をステップS402に移行する。
ここで、本実施例に係る差分情報とは、各比較項目における単純な差の情報である。例えば、比較項目(1)の差分情報とは、第2のプログラムにおける(1)1サイクルあたりに実行したVLIW数から第1のプログラムにおける(1)1サイクルあたりに実行したVLIW数を引いた値である。
ステップS402において、プログラム性能解析装置10は、例えば、メモリ22上に展開されている評価基準情報50を参照する。そして、各比較項目における判断方法と判断理由とを取得し、処理をステップS403に移行する。
ここで、図5に本発明の実施例に係る評価基準情報50の構成例を示す。図5に示すように、本実施例に係る評価基準情報50は、比較項目と判断方法と判断理由とで構成されている。
比較項目には、図3に示したステップS302及びS304で取得した性能情報のうち、(1)1サイクルあたりに実行したVLIW数、(2)VLIWの平均命令数、(3)パイプラインのストールサイクル数、(4)実行命令数、(5)ロード/ストア命令実行数、(6)データキャッシュミス率、(7)命令キャッシュミス率、及び(8)分岐予測ミス率を使用している。
判断方法は、比較項目(1)〜(8)がどのような場合にプログラム性能が改善されたと判断するかを示している。例えば、第1のプログラムにおける(1)1サイクルあたりに実行したVLIW数と比較して、第2のプログラムにおける(1)1サイクルあたりに実行したVLIW数の方が「大きい」場合、すなわち、ステップS401で生成した(1)1サイクルあたりに実行したVLIW数の差分情報が正の値の場合に、プログラム性能が改善されたと判断する。
同様に、第1のプログラムにおける(3)パイプラインのストールサイクル数と比較して、第2のプログラムにおける(3)パイプラインのストールサイクル数の方が「小さい」場合、すなわち、ステップS401で生成した(3)パイプラインのストールサイクル数の差分情報が負の場合に、プログラム性能が改善されたと判断する。
判断理由は、比較項目(1)〜(8)が改良した理由を示している。例えば、(1)1サイクルあたりに実行したVLIW数が大きくなったのは、プログラムの変更により命令の並列度が向上したからである。
ステップS403において、プログラム性能解析装置10は、各比較項目について、プログラム性能が改善された項目(以下、「性能改善項目」という)を抽出する。そして、例えば、性能改善項目が全体の半数以上である場合に、全体としてプログラム性能が改善されたと判断する。また、各比較項目を点数化して重み付けを行なった上で、性能改善項目の総和を算出し、所定の点数以上となった場合にプログラム性能が改善されてと判断しても良い。
評価が決定すると、プログラム性能解析装置10は、ステップS404に移行して評価処理を終了する。その後、プログラム性能解析装置10は、図3に示したステップS306に処理を移行し、評価結果を出力装置24に表示する。
図6は、本発明の実施例に係る判断結果の表示例を示す図である。
図6に示す表示例では、判断結果と判断理由を出力装置24に表示する場合の例を示している。「判断結果」には、図4のステップS403で判断した結果が表示されている。また、「判断理由」には、性能改善項目のうち最も改善された項目の判断理由を評価基準情報50から取得して表示している。ただし、必要に応じて、複数の判断理由を比較項目毎に表示してもよい。
さらに、本実施例に係るプログラム性能解析装置10は、図3及び4に示したプログラム性能解析処理を行なう毎に、取得した性能情報(又は、各性能情報の変化の割合)やプログラム修正をデータベースとして記憶しておき、利用者の指示により又は必要に応じて、当該性能情報を統計的に表示してもよい。
図7は、本発明の実施例に係る統計的表示の例を示す図である。図に示す統計的表示の横軸は測定回数、縦軸は測定値である。測定回数は、図3及び図4に示したプログラム性能解析処理によって性能情報を取得した回数を示す。
ここで、本実施例に係る統計的表示では、プログラム性能解析装置10が急激に測定値の変化した箇所を検出して強調表示を行なっている。図7には、強調表示として一点鎖線で該当箇所を囲んでいる場合を示している。ただし、これに限定する趣旨ではなく、該当の色を変えるなど必要に応じた強調を行なえばよい。
また、本実施例に係る統計的表示は、図7に示した測定回数毎に測定値を表示するだけでなく、例えば、平均や分散等の統計情報を表示しても良い。
以上の説明において、同一のプログラムに対して複数通りの変更を施す場合も考えられる。例えば、同一のプログラムに対して変更Aを加えた場合と、変更Bを加えた場合と、変更Cを加えた場合などである。この場合、例えば、図3において、各プログラムを実行して性能情報を取得した後、ステップS305において、図8に示す比較対象選択画面を表示して、利用者に比較対象を選択させ、当該選択された性能情報についてステップS305及びS306の処理を実施すればよい。
図8は、本発明の実施例に係る比較対象選択画の表示例を示す図である。図8に示す比較対象選択画面は、図3に示したステップS303及びS304の処理によって、同一のプログラムに対して異なる修正が加えられた3つのプログラムについての性能情報(図に示す性能情報1〜3)を取得した場合の例を示している。
利用者が入力装置23(例えば、マウス)等を使用して□部分をクリックすると、プログラム性能解析装置10は、当該クリックされた性能情報を取得して比較対象とする。そして、その性能情報の□部分に■を表示する。図8では、性能情報1と性能情報2が選択された場合を示している。
以上に説明した本実施例に係るプログラム性能解析装置10は、必要に応じて、図3に示した処理の終了の後、以下に示すプログラムに対する変更推奨箇所を特定する処理も行なう。
図9は、本発明の実施例に係るプログラム性能解析装置10による変更推奨箇所特定処理のフローチャートである。
ステップS901において、プログラム性能解析装置10は、第1のプログラムについて、プログラムの変更によりプログラム性能が向上したブロックを特定する。例えば、プログラム性能解析装置10は、差分情報を参照し、プログラム性能が改善された処理部を特定する。そして、当該処理の処理命令を含むブロックを特定する。
ステップS902において、プログラム性能解析装置10は、ステップS901で特定したブロックの特徴を抽出する。ブロックの特徴を抽出する方法については、図10で後述する。特徴の抽出が終了すると、プログラム性能解析装置10は、処理をステップS903に移行する。
ステップS903において、プログラム性能解析装置10は、第2のプログラム全体について、ブロック毎に特徴を抽出する。そして、ステップS902で抽出した特徴と同じ特徴を有するブロックを検索する。
ステップS904において、プログラム性能解析装置10は、変更を施すことによりプログラム性能の改善が見込まれる変更推奨箇所として、ステップS903で検索したブロックを出力装置24に表示して処理を終了する(ステップS905)。
ここで、ブロックとは、例えば、1又は2以上の演算処理を行なう命令群のことであり、例えば、FOR文における一連のネスト構造や、IF文における一連のネスト構造を1ブロックとすればよい。
図10は、本発明の実施例に係るプログラム性能解析装置10によるプログラムの特徴を特定する処理の概要を示すフローチャートである。
ステップS1001において、プログラム性能解析装置10は、ブロック毎に、プログラムから制御構造(例えば、IF文やFOR文などのネスト構造)を抽出する。そして、処理をステップS1002に移行する。
ステップS1002において、プログラム性能解析装置10は、ブロック毎に、データの依存関係を解析した後、当該データにおけるデータフローを解析する。ここで、データフローとは、例えば、所定のデータに対する一連の処理の流れである。例えば、データaが、「保存先A」から読出され、「プロセスB」でデータbに加工され、「保存先C」に保存された、といった情報である。
ステップS1003において、プログラム性能解析装置10は、プログラムをブロック毎に区分し、処理をステップS1004に移行する。
ステップS1004において、プログラム性能解析装置10は、例えば、制御構造とデータフローについての複数の特徴パターンが予め記憶された特徴情報を外部記憶装置26から読出す。そして、ブロック毎に、特徴パターンと、ステップS1001で抽出した制御構造及びステップS1002で抽出したデータフローと、を比較する。そして、両者が一致した場合に当該ブロックは当該特徴パターンを特徴に持つと判断する。
特徴の抽出が終了すると、プログラム性能解析装置10は、ステップS1005に移行して処理を終了する。
以上に説明した本発明の実施例に係るプログラム性能解析装置10は、プログラムの変更等を行なうプログラム開発環境やプログラム実行デバッグ環境をさらに備えてもよい。
図11は、プログラム性能解析環境1101、プログラム開発環境1102及びデバッグ環境1103を備えるプログラム性能解析装置1100の例を示す図である。
プログラム性能解析環境1101は、図3及び図4に示すプログラム性能解析処理を行なう。すなわち、プログラム実行時に性能情報を取得し、取得した性能情報から差分情報を生成し、差分情報からプログラムに施した変更の良し悪しを評価する。そして、評価結果を理由とともに出力装置24に表示する。
プログラム開発環境1102は、例えば、プログラムソースに変更を加え、変更後のプログラムソースをコンパイルしてオブジェクトファイル等を生成し、さらに、実行に必要なオブジェクトファイルをリンクして実行形式のデータ(実行ファイル)を生成する。
デバッグ環境1103は、プログラム開発環境1102で生成した実行ファイルをメモリにロードして実行し、さらに、デバッグを行なうデバッグ手段を提供する。
これらプログラム性能解析環境1101、プログラム開発環境1102及びデバッグ環境1103を連動して実行可能とすることにより、利用者は、一連の作業を円滑に行なうことが可能となる。
図12は、本発明の実施例に係るプログラム性能解析装置10の変形例を示すフローチャートである。
ステップS1201において、評価対象のプログラムを評価対象プログラム実行装置29上で実行開始する。プログラムの実行が開始されると、プログラム性能解析装置10は、処理をステップS1202に移行する。
ステップS1202において、プログラム性能解析装置10は、プログラム命令にしたがって動作中の評価対象プログラム実行装置29に係るCPUから性能情報を取得する。なお、性能情報については、図3で説明したものを使用する。
プログラムの実行が終了すると、プログラム性能解析装置10は、処理をステップS1203に移行する。そして、過去に取得して外部記憶装置26等に記憶されている性能情報(以下、「旧性能情報」という)から経験値を算出する。
経験値には、比較項目毎に、旧性能情報の(a)平均値、(b)最大値、(c)最小値又は(d)総合評価値のいずれかを必要に応じて使用する。
ここで、n回目に測定された性能情報(比較項目)の値をMnとし、Mnに対する重み係数をCnとすると、
(a)平均値は、(1)式で求めることができる。
C1×M1+C2×M2+C3×M3+・・・+Cn×Mn ・・・ (1)
ただし、Cn=1/n
(b)最大値は、(2)式で求めることができる。
MAX(C1×M1,C2×M2,C3×M3,・・・,Cn×Mn) ・・・ (2)
ただし、Cn=1
(c)最小値は、(3)式で求めることができる。
MIN(C1×M1,C2×M2,C3×M3,・・・,Cn×Mn) ・・・ (3)
ただし、Cn=1
なお、MAX(A、B、・・・)は、A、B、・・・のうち最大値を算出する関数を示し、MIN(A、B、・・・)は、A、B、・・・のうち最小値を算出する関数を示す。
(d)総合評価値は、重要度をD1、D2、D3、・・・Dnとすると、(4)で求めることができる。
D1×M1+D2×M2+D3×M3+・・・+Dn×Mn ・・・ (4)
ここで、重要度とは、性能情報M1〜Mnに対する重み付けの度合いである。例えば、性能情報M1〜Mnのうちプログラム性能が改善されたと評価された時の性能情報Mxは重要度大であると考え、その性能情報Mxに対する重み係数Dx(初期値は1)を例えば1.5倍にする。
また、前回測定した性能情報との差分(例えば、M1とM2の差分)の割合が大きい性能情報Mxが重要度大であると考え、その性能情報Mxに対する重み係数Dx(初期値は1)を例えば1.5倍としてもよい。
以上に説明した経験値の算出が終了すると、プログラム性能解析装置10は、処理をステップS1204に移行する。そして、ステップS1202で取得した性能情報とステップS1203で算出した経験値とを比較して差分情報を生成する。なお、本実施例に係る差分情報は、例えば、評価基準情報50にある各比較項目における単純な差の情報である。
差分情報を生成すると、プログラム性能解析装置10は、処理をステップS1205に移行する。そして、プログラム性能解析装置10は、例えば、メモリ22上に展開されている評価基準情報50を参照し、各比較項目における判断方法と判断理由とを取得する。
さらに、ステップS1206において、プログラム性能解析装置10は、各比較項目について、ステップS1204で生成した差分情報から性能改善項目を抽出する。そして、例えば、性能改善項目が全体の半数以上の場合に、全体としてプログラム性能が改善されたと判断する。
評価が決定すると、プログラム性能解析装置10は、処理をステップS1207に移行する。そして、評価結果を出力装置24に表示して処理を終了する。
以上に説明したように、本実施例に係るプログラム性能解析装置は、単独の性能情報を利用したプログラム性能の評価の困難性に鑑み、第1のプログラムと第2のプログラムのように複数のプログラムにおける性能情報をハードウェアから取得して比較することによって(ステップS401、S1204)、容易にプログラム性能の評価を行なうことが可能となる。
また、本実施例に係るプログラム性能解析装置は、第1のプログラムに変更を加えて生成した第2のプログラムのプログラム性能が、当該変更により向上したか否かを判断し(ステップS305、S1206)、判断結果(変更の良し悪し)を利用者に提示する(ステップS306、S1207)。
その結果、変更によりプログラム性能が良くなったとの判断結果が提示されれば、利用者は、さらにチューニングを行なえばよく、変更によりプログラム性能が悪くなったとの判断結果が提示されれば、変更を元に戻し、改めてチューニングを行なうことが可能となる。したがって、プログラムのチューニングを速やかに行なうことが可能となる。
また、判断結果について判断理由が示されるので(図6)、利用者はプログラムに対する変更の効果を認識することが可能となる。
また、変更推奨箇所が提示されるので(S904)、利用者は、プログラム性能の向上に効果のある変更をプログラムに施すことが可能となり、プログラムのチューニングをより速やかに行なうことが可能となる。
さらに、経験値を用いてプログラム性能の判断を行なうことにより(ステップS1203〜S1206)、チューニング実績を積むほどチューニング効果を得ることができる効果を奏する。

Claims (7)

  1. 特定のハードウェアで動作するプログラムの性能を解析するプログラム性能解析装置であって、
    プログラムを実行し、該プログラムの命令に応じて動作するハードウェアから該ハードウェアの動作状況を示す性能情報を取得する性能情報取得手段と、
    該性能情報取得手段を用いて取得した第1のプログラムにおける性能情報と該第1のプログラムの任意の部分に対して変更を加えた第2のプログラムにおける性能情報とを比較し、該比較結果から性能差分情報を生成する差分情報生成手段と、
    該差分情報生成手段が生成した性能差分情報に基づいて、前記変更によりプログラムの性能が向上したか否かを判断して利用者に通知する変更評価手段と、
    前記第1のプログラムについて、前記変更によりプログラム性能が向上した改善部を特定する性能改善部特定手段と、
    該改善部におけるプログラムの特徴を抽出する特徴抽出手段と、
    前記第2のプログラムについて、前記抽出した特徴と同じ特徴を有する部分の検索を実施して、プログラム性能の改善が見込まれる変更推奨部を特定する変更推奨部特定手段と、
    を備るプログラム性能解析装置。
  2. 前記変更評価手段は、前記性能差分情報からプログラム性能が改善されたか否かを判断する判断方法と、該判断理由と、を有する評価基準情報を記憶手段から読出して、該判断方法にしたがってプログラムの性能が向上したか否かを判断し、該判断結果とともに判断理由を表示手段に表示する、
    ことを特徴とする請求項1に記載のプログラム性能解析装置。
  3. 前記性能情報取得手段が性能情報を取得する毎に、該取得した性能情報を記憶部に記憶し、該性能情報を統計的に表示手段に表示するとともに、急激な変化を示す部分を強調表示する統計表示手段をさらに備える、
    ことを特徴とする請求項1に記載のプログラム性能解析装置。
  4. 前記性能情報取得手段が性能情報を取得する毎に、該取得した性能情報を記憶部に記憶し、該性能情報を統計的に処理することによって経験値を生成する経験値生成手段をさらに備え、
    前記差分情報生成手段は、該経験値と前記第2のプログラムにおける性能情報とを比較し、該比較結果から性能差分情報を生成する、
    ことを特徴とする請求項1に記載のプログラム性能解析装置。
  5. 特定のハードウェアで動作するプログラムの性能を解析するプログラム性能解析方法であって、
    プログラムを実行し、該プログラムの命令に応じて動作するハードウェアから該ハードウェアの動作状況を示す性能情報を取得し、該取得した性能情報を性能情報記憶手段に記憶する性能情報取得処理と、
    該性能情報取得処理により取得した第1のプログラムにおける性能情報と該第1のプログラムの任意の部分に対して変更を加えた第2のプログラムにおける性能情報とを前記性能情報記憶手段から読出して比較し、該比較結果から性能差分情報を生成し、該性能差分情報を性能差分情報記憶手段に記憶する差分情報生成処理と、
    該性能差分情報記憶手段から読出した性能差分情報に基づいて、前記変更によりプログラムの性能が向上したか否かを判断して利用者に通知する変更評価処理と、
    前記第1のプログラムについて、前記変更によりプログラム性能が向上した改善部を特定する性能改善部特定処理と、
    該改善部におけるプログラムの特徴を抽出する特徴抽出処理と、
    前記第2のプログラムについて、前記抽出した特徴と同じ特徴を有する部分の検索を実施して、プログラム性能の改善が見込まれる変更推奨部を特定する変更推奨部特定処理と、
    を行うプログラム性能解析方法
  6. 前記性能情報取得処理により性能情報を取得する毎に、該取得した性能情報を性能情報記憶手段に記憶し、該記憶した性能情報を統計的に処理することによって経験値を生成する経験値生成処理をさらに行い、
    前記差分情報生成処理では、該経験値と前記第2のプログラムにおける性能情報とを比較し、該比較結果から性能差分情報を生成する、
    ことを特徴とする請求項に記載のプログラム性能解析方法
  7. 特定のハードウェアで動作するプログラムの性能を解析するプログラム性能解析のためのプログラムであって、
    プログラムを実行し、該プログラムの命令に応じて動作するハードウェアから該ハードウェアの動作状況を示す性能情報を取得し、該取得した性能情報を性能情報記憶手段に記憶する性能情報取得処理と、
    該性能情報取得処理により取得した第1のプログラムにおける性能情報と該第1のプログラムの任意の部分に対して変更を加えた第2のプログラムにおける性能情報とを前記性能情報記憶手段から読出して比較し、該比較結果から性能差分情報を生成し、該性能差分情報を性能差分情報記憶手段に記憶する差分情報生成処理と、
    該性能差分情報記憶手段から読出した性能差分情報に基づいて、前記変更によりプログラムの性能が向上したか否かを判断して利用者に通知する変更評価処理と、
    前記第1のプログラムについて、前記変更によりプログラム性能が向上した改善部を特定する性能改善部特定処理と、
    該改善部におけるプログラムの特徴を抽出する特徴抽出処理と、
    前記第2のプログラムについて、前記抽出した特徴と同じ特徴を有する部分の検索を実施して、プログラム性能の改善が見込まれる変更推奨部を特定する変更推奨部特定処理と、
    を情報処理装置に実行させるプログラム。
JP2008536267A 2006-09-28 2006-09-28 プログラム性能解析装置 Expired - Fee Related JP4983801B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/319367 WO2008038389A1 (fr) 2006-09-28 2006-09-28 Appareil d'analyse de performance de programme

Publications (2)

Publication Number Publication Date
JPWO2008038389A1 JPWO2008038389A1 (ja) 2010-01-28
JP4983801B2 true JP4983801B2 (ja) 2012-07-25

Family

ID=39229837

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008536267A Expired - Fee Related JP4983801B2 (ja) 2006-09-28 2006-09-28 プログラム性能解析装置

Country Status (3)

Country Link
US (1) US8839210B2 (ja)
JP (1) JP4983801B2 (ja)
WO (1) WO2008038389A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8739143B2 (en) * 2007-01-31 2014-05-27 Hewlett-Packard Development Company, L.P. Profiling metrics for computer programs
US8949797B2 (en) * 2010-04-16 2015-02-03 International Business Machines Corporation Optimizing performance of integrity monitoring
EP2557503B1 (en) * 2011-07-28 2020-04-01 Tata Consultancy Services Ltd. Application performance measurement and reporting
US9552202B2 (en) 2011-12-08 2017-01-24 International Business Machines Corporation Automated and heuristically managed solution to quantify CPU and path length cost of instructions added, changed or removed by a service team
US9075913B2 (en) * 2012-02-27 2015-07-07 Qualcomm Incorporated Validation of applications for graphics processing unit
US9374319B2 (en) * 2013-05-17 2016-06-21 Hitachi, Ltd. Operation content evaluation system and storage medium
US9448913B2 (en) * 2013-08-28 2016-09-20 Sap Se Performance metric visualization systems and methods
US9715663B2 (en) 2014-05-01 2017-07-25 International Business Machines Corporation Predicting application performance on hardware accelerators
US9891907B2 (en) * 2014-07-07 2018-02-13 Harman Connected Services, Inc. Device component status detection and illustration apparatuses, methods, and systems
US11068827B1 (en) 2015-06-22 2021-07-20 Wells Fargo Bank, N.A. Master performance indicator
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US11977891B2 (en) * 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US10282283B2 (en) * 2016-01-28 2019-05-07 Accenture Global Solutions Limited Orchestrating and providing a regression test
JP6801267B2 (ja) * 2016-07-04 2020-12-16 富士通株式会社 評価プログラム、評価方法、評価装置および情報処理装置
EP3623953B1 (en) * 2018-09-17 2022-01-19 Siemens Healthcare GmbH Technical improvement evaluation for a set of applications
US11042465B1 (en) * 2020-09-02 2021-06-22 Coupang Corp. Systems and methods for analyzing application loading times
CN113391989B (zh) * 2021-06-30 2024-01-09 北京百度网讯科技有限公司 程序评估方法、装置、设备、介质及程序产品

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4217636A (en) * 1976-02-27 1980-08-12 Black Bocs, Ltd. Computer performance measurement device and process
US4080650A (en) * 1976-07-28 1978-03-21 Bell Telephone Laboratories, Incorporated Facilitating return from an on-line debugging program to a target program breakpoint
JPH06119205A (ja) * 1992-10-01 1994-04-28 Toshiba Corp ソフトウェアの品質分析装置およびその高品質化支援装置
JP2634137B2 (ja) * 1993-01-27 1997-07-23 インターナショナル・ビジネス・マシーンズ・コーポレイション ユーザ・インターフェースシステム及び方法
JPH06250838A (ja) 1993-02-24 1994-09-09 Hitachi Ltd プログラミングチューニング支援システム
JP2636665B2 (ja) * 1993-02-26 1997-07-30 日本電気株式会社 実行情報採取装置
JP3280449B2 (ja) * 1993-03-01 2002-05-13 富士通株式会社 コンパイル装置
JPH06309193A (ja) * 1993-04-27 1994-11-04 Toshiba Corp 機械語プログラムの動作検証方法および装置
US5442740A (en) * 1993-07-13 1995-08-15 International Business Machines Corporation Method and apparatus for visual display of program performance trace data
US5889530A (en) * 1996-03-14 1999-03-30 Tandem Computers, Inc. Method and apparatus for dynamically presenting graphical representation of instrumentation
JPH1078892A (ja) * 1996-09-03 1998-03-24 Fujitsu Ltd ソフトウエア制御システムの処理能力評価方式
US5958009A (en) * 1997-02-27 1999-09-28 Hewlett-Packard Company System and method for efficiently monitoring quality of service in a distributed processing environment
JP3182111B2 (ja) * 1997-03-31 2001-07-03 日立ソフトウエアエンジニアリング株式会社 プログラムテスト支援装置
JP3767718B2 (ja) * 1997-10-06 2006-04-19 横河電機株式会社 トレンドグラフ表示装置
US5953534A (en) * 1997-12-23 1999-09-14 University Of Washington Environment manipulation for executing modified executable and dynamically-loaded library files
US6321263B1 (en) * 1998-05-11 2001-11-20 International Business Machines Corporation Client-based application availability
JP2000073369A (ja) * 1998-08-28 2000-03-07 Nisshoku Corp 裸地法面の緑化用植生基体
US6272666B1 (en) * 1998-12-30 2001-08-07 Intel Corporation Transistor group mismatch detection and reduction
JP2000231581A (ja) * 1999-02-12 2000-08-22 Hitachi Ltd 情報処理装置、情報処理システム及び記憶媒体
US6463553B1 (en) * 1999-10-01 2002-10-08 Stmicroelectronics, Ltd. Microcomputer debug architecture and method
US6732307B1 (en) * 1999-10-01 2004-05-04 Hitachi, Ltd. Apparatus and method for storing trace information
US7100152B1 (en) * 2000-01-31 2006-08-29 Freescale Semiconductor, Inc. Software analysis system having an apparatus for selectively collecting analysis data from a target system executing software instrumented with tag statements and method for use thereof
JP3961787B2 (ja) 2000-06-12 2007-08-22 富士通株式会社 オブジェクト指向プログラム性能改善支援装置、記録媒体及びプログラム
JP3842592B2 (ja) 2001-07-26 2006-11-08 株式会社東芝 変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム
CA2485159A1 (en) * 2002-05-06 2003-11-13 Software Engineering Gmbh Comparison of processing protocols
AU2003276685A1 (en) * 2002-06-13 2003-12-31 Netscout Systems, Inc. Real-time network performance monitoring system
JP4089427B2 (ja) * 2002-12-26 2008-05-28 株式会社日立製作所 管理システム、管理計算機、管理方法及びプログラム
US20040193395A1 (en) * 2003-03-26 2004-09-30 Dominic Paulraj Program analyzer for a cycle accurate simulator
US20040243379A1 (en) * 2003-05-29 2004-12-02 Dominic Paulraj Ideal machine simulator with infinite resources to predict processor design performance
US7228534B2 (en) * 2003-06-14 2007-06-05 Intel Corporation Optimizing performance of a program or a computer system
JP2005063136A (ja) * 2003-08-12 2005-03-10 Toshiba Corp 半導体集積回路の設計装置、設計方法、及び設計プログラム
JP2005100161A (ja) * 2003-09-25 2005-04-14 Hitachi Software Eng Co Ltd 性能試験支援装置
US7730459B2 (en) * 2003-09-30 2010-06-01 Intel Corporation Generating executable code based on code performance data
US7478371B1 (en) * 2003-10-20 2009-01-13 Sun Microsystems, Inc. Method for trace collection
US7506330B2 (en) * 2004-02-12 2009-03-17 International Business Machines Corporation Method and apparatus for identifying differences in runs of a computer program due to code changes
US20050223361A1 (en) * 2004-04-01 2005-10-06 Belbute John L Software testing based on changes in execution paths
US7739532B2 (en) * 2004-06-07 2010-06-15 Intel Corporation Method, apparatus and system for enhanced CPU frequency governers
JP4599902B2 (ja) * 2004-06-18 2010-12-15 株式会社日立製作所 ハードウェアモニタを用いた性能解析方法
US20060101418A1 (en) * 2004-10-21 2006-05-11 International Business Machines Corporation Apparatus and method for automatic generation of event profiles in an integrated development environment
US7703079B1 (en) * 2005-05-03 2010-04-20 Oracle America, Inc. System performance prediction
JP4414373B2 (ja) * 2005-06-30 2010-02-10 富士通株式会社 プログラムの検証プログラム、プログラムの検証装置、プログラムの検証方法
US8046678B2 (en) * 2005-08-22 2011-10-25 Yahoo! Inc. Employing partial evaluation to provide a page
JP2007207173A (ja) * 2006-02-06 2007-08-16 Fujitsu Ltd 性能分析プログラム、性能分析方法、および性能分析装置
US20070226697A1 (en) * 2006-03-23 2007-09-27 International Business Machines Corporation Autonomic performance management
US7272517B1 (en) * 2006-04-25 2007-09-18 International Business Machines Corporation Method and system for providing performance estimations for a specified power budget
US7937690B2 (en) * 2006-05-23 2011-05-03 Hewlett-Packard Development Company, L.P. Evaluating performance of software application
US20090144713A1 (en) * 2006-07-04 2009-06-04 George Russell Techniques for program performance analysis
US8234636B2 (en) * 2006-09-12 2012-07-31 International Business Machines Corporation Source code modification technique

Also Published As

Publication number Publication date
US20090217247A1 (en) 2009-08-27
JPWO2008038389A1 (ja) 2010-01-28
US8839210B2 (en) 2014-09-16
WO2008038389A1 (fr) 2008-04-03

Similar Documents

Publication Publication Date Title
JP4983801B2 (ja) プログラム性能解析装置
US6487715B1 (en) Dynamic code motion optimization and path tracing
US7168059B2 (en) Graphical loop profile analysis
US9569179B1 (en) Modifying models based on profiling information
JP5648584B2 (ja) ソフトウェアアプリケーションのプロファイリング方法及び装置
US5347647A (en) Method of predicting the performance of an emulated computer system
US7065759B2 (en) System and method for assigning basic blocks to computer control flow paths
US7451439B2 (en) System and method for automatically identifying compound refactorings of program code through quantitative metric analysis
US7669188B2 (en) System and method for identifying viable refactorings of program code using a comprehensive test suite
US20080307387A1 (en) Software development apparatus and method for providing performance prediction
Laukemann et al. Automatic throughput and critical path analysis of x86 and arm assembly kernels
JP2003044275A (ja) 変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム
CN114365095A (zh) 用于评估软件开发者的代码贡献的系统和方法
CN101960419A (zh) 基于应用程序构建操作系统镜像
JP4516001B2 (ja) ソフトウェアテスト管理プログラム、ソフトウェアテスト管理装置、ソフトウェアテスト管理方法
Pllana et al. Towards an intelligent environment for programming multi-core computing systems
US6718544B1 (en) User interface for making compiler tradeoffs
Kashnikov et al. Evaluating architecture and compiler design through static loop analysis
CN108287787A (zh) 一种基于时态的对象变更影响分析方法和系统
JP2009075965A (ja) ソフトウェア開発方法及びソフトウェア開発装置
JP2007316769A (ja) 計算機システムの開発方法、計算機システムの開発プログラム
CN111340276B (zh) 一种生成预测数据的方法及系统
Marin et al. Application insight through performance modeling
JP4827469B2 (ja) キャッシュメモリ解析方法、プロセッサおよび模擬情報処理装置
CN112579555A (zh) 一种在微体系结构层面表征区块链系统的方法和装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120106

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120327

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120409

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150511

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees