JP2005352894A - 性能解析プログラム及び性能解析プログラムの生成方法 - Google Patents

性能解析プログラム及び性能解析プログラムの生成方法 Download PDF

Info

Publication number
JP2005352894A
JP2005352894A JP2004174555A JP2004174555A JP2005352894A JP 2005352894 A JP2005352894 A JP 2005352894A JP 2004174555 A JP2004174555 A JP 2004174555A JP 2004174555 A JP2004174555 A JP 2004174555A JP 2005352894 A JP2005352894 A JP 2005352894A
Authority
JP
Japan
Prior art keywords
measurement
routine
performance analysis
time
command
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.)
Pending
Application number
JP2004174555A
Other languages
English (en)
Inventor
Hideki Yamamoto
秀喜 山本
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2004174555A priority Critical patent/JP2005352894A/ja
Priority to US11/150,259 priority patent/US20050278145A1/en
Publication of JP2005352894A publication Critical patent/JP2005352894A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/3419Recording 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 by assessing time
    • 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/3466Performance evaluation by tracing or monitoring

Landscapes

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

Abstract

【課題】簡易性能解析用プログラムにおける時間測定の誤差軽減を可能とする。
【解決手段】
ユーザプログラムのコンパイル過程において、サブルーチンや関数の呼び出しの直前、直後に時間取得用命令を埋め込むことにより、従来の性能解析プログラムで発生していた時間取得の誤差を軽減する。
【選択図】 図2

Description

本発明は、時間測定の誤差を軽減することを特徴とする性能解析プログラム及び性能解析プログラムの生成方法に関する。
近年の計算機ハードウェアの性能向上は目覚ましいが、計算機内部の各回路間で処理の同期を取るための動作周波数であるクロック周波数の向上による性能向上の速度には限界があり、実際の性能向上のかなりの部分は並列処理によって得られている。
並列処理の目的は、1にも2にも高性能化である。この目的が達成されたかどうかは、実際に性能を解析することにより確認することができる。そこで、並列処理の研究では必ず性能解析が必要となる。
ここでいう性能解析とは、プログラムのどこにどの程度の時間がかかったのか、なぜそうなったのか、プロセッサ数や通信時間といったハードウェアパラメタとの関係はどうなっているのか、などの問題を分析することである。
性能解析を行う上でもっとも基本的な性能指標は、所要時間(ターンアラウンドタイム)である。しかし、並列処理の場合には、複数のプロセスが走っているので、全部のプロセスが同時に開始して同時に終了するわけではない。そこで、理想的には、最初に実行を開始したプロセスの開始時刻から、最後に実行を終了したプロセスの終了時刻までを所要時間として定義する。
この所要時間を求めるための性能解析を行うプログラムが、性能解析プログラムである。
従来の性能解析プログラムでは、コンパイル時に性能解析用オプションを指定された場合に、サブルーチンや関数呼び出しの入り口部分に性能解析を開始するための測定開始ルーチンの呼び出しを埋め込み、出口部分に測定終了ルーチンの呼び出しを埋め込む。その後、それら測定用ルーチンを埋め込んだ実行形式プログラムを実行することで、各々のサブルーチンや関数の性能解析を行っていた(特許文献1参照)。
しかしながら、前述の方法では制御が測定ルーチンへ移行した後、時間測定用命令を実行している。また、測定ルーチンから制御を元のルーチンへ移行をする前に時間測定用命令を実行している。通常、サブルーチンや関数の開始時点において、スタック領域の確保やレジスタの退避といったリンケージ規約に基づくプロローグ処理が実行され、サブルーチンや関数の終了時点において、スタックの開放やレジスタの復帰といったリンケージ規約に基づくエピローグ処理が実行される。
なお、ルーチンとは特定の処理を実行する機能を持ったプログラムコードの集合体のことである。また、特に個別のプログラムコードとして独立していなくても、数行〜数十行程度のコードが特定の処理を行うために固まって配置されていれば、その部分をルーチンと呼ぶことができる。
ルーチンはプログラム内での立場によって大きく2つに分けられ、プログラムを開始する際に最初に呼び出され、プログラム全体の進行を管理するルーチンを「メインルーチン」、プログラムの実行中に他のルーチンから呼び出されて動作するルーチンを「サブルーチン」と呼ぶ。
性能解析用の測定開始ルーチンや、測定終了ルーチンにも、同様のプロローグ処理、エピローグ処理が存在するため、時間測定用命令は、そのプロローグ処理の直後とエピローグ処理の直前に行うことになるが、この時間測定用命令で得られた時間は、プロローグ処理やエピローグ処理の実行時間を含んだ時間となっている。
前述の方法では、この問題を解決するために、プロローグ処理や、エピローグ処理の実行に必要な時間をあらかじめ見積もり、固定値を時間測定用命令で得られた時間から差し引くことで解決していた。
しかしながら、この方法の場合、プロローグ処理とエピローグ処理の時間を差し引く値が固定値であるため、測定ルーチンへ移行時、あるいは測定ルーチンから元ルーチンへの復帰時に発生する命令キャッシュミスの時間や、レジスタの退避や、復帰時に発生するメモリアクセス時間の遅延等の実行時に変動する時間(以下、変動時間と呼ぶ)を測定時間として計算することができないため、測定ルーチンの呼び出し回数が多い場合に、実際の実行時間と、測定時間との差が大きくなり、性能解析にあたえる影響が大きくなる。
また、その他の従来の方式では、ユーザプログラムのコンパイル過程において、時間測定命令を測定ルーチンプロローグ処理後、エピローグ処理前に実行していたためにプロローグ処理やエピローグ処理時に発生する変動時間を正確に測定時間に反映できていなかった(特許文献2参照)。
特開昭63―148342 特開平3―102437
本発明の目的は、従来解析できなかったプロローグ処理及びエピローグ処理の実行における変動時間を解決し、性能解析をより精密に行うよう改善する簡易性能解析用プログラムにおける時間測定の誤差軽減方法及び該方法を用いたプログラムを提供することである。
本発明の他の目的は、自動的にコンパイラの一部として挿入する機能であり、測定ルーチンの一部をインライン展開することを特徴とする時間測定の誤差軽減方法及び該方法を用いたプログラムを提供することである。
本発明の他の目的は、測定ルーチンを呼び出すCALL文の直前、直後に測定ルーチンの一部である時間測定部分を、部分的なインライン展開を行うことにより、測定ルーチンを呼び出してから時間測定部分までにかかる時間の誤差を減らすことを特徴とする時間測定の誤差軽減方法及び該方法を用いたプログラムを提供することである。
以下に、[発明を実施するための最良の形態]で使用される番号を括弧付きで用いて、課題を解決するための手段を説明する。これらの番号は、[特許請求の範囲]の記載と[発明を実施するための最良の形態]との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
本発明の性能解析プログラム(50)は、性能解析を開始するための測定開始ルーチンを実行するステップと、前記性能解析を終了するための測定終了ルーチンを実行するステップと、前記測定開始ルーチンを呼び出す第1呼出命令文の前又は後の少なくとも一方にある時間測定用命令を実行するステップと、前記測定終了ルーチンを呼び出す第2呼出命令文の前又は後の少なくとも一方にある時間測定用命令を実行するステップとをコンピュータに実行させる。
前記測定開始ルーチンを呼び出す前記第1呼出命令文の後の第1時間測定用命令は、前記測定開始ルーチンの直後に実行される処理に対する時間測定の開始時間を取得するための命令であり、前記測定終了ルーチンを呼び出す前記第2呼出命令文の前の第2時間測定用命令は、前記測定終了ルーチンの直前に実行された処理に対する時間測定の終了時間を取得するための命令である。
前記測定開始ルーチンを呼び出す前記第1呼出命令文の前の第3時間測定用命令は、前記測定開始ルーチンの直前に実行された処理に対する時間測定の終了時間を取得するための命令であり、
前記測定終了ルーチンを呼び出す前記第2呼出命令文の後の第4時間測定用命令は、前記測定終了ルーチンの直後に実行される処理に対する時間測定の開始時間を取得するための命令である。
前記性能解析は、当該性能解析プログラム(50)に含まれるサブルーチンの各々に対して行われる。
前記性能解析は、当該性能解析プログラム(50)に含まれる関数の各々に対して行われる。
本発明の性能解析プログラム(50)の生成方法は、コンパイラ(30)によるソースプログラム(40)のコンパイル過程において、手続き判定部(31)により、前記ソースプログラムに含まれる少なくとも一つの命令文がサブルーチン又は関数であるか否かを判定するステップと、測定ルーチン埋め込み部(32)により、前記サブルーチン又は前記関数の先頭に測定開始ルーチンを呼び出す第1呼出命令文を埋め込み、前記サブルーチン又は前記関数の末尾に測定終了ルーチンを呼び出す第2呼出命令文を埋め込むステップと、時間測定用命令埋め込み部(33)により、前記測定開始ルーチンを呼び出す前記第1呼出命令文の前又は後の少なくとも一方に時間測定用命令を埋め込むステップと、前記測定終了ルーチンを呼び出す前記第2呼出命令文の前又は後の少なくとも一方に時間測定用命令を埋め込むステップとを具備する。
性能解析プログラム(50)の生成方法は、コンパイラ(30)によるソースプログラム(40)のコンパイル過程において、前記時間測定用命令埋め込み部(33)により、前記測定開始ルーチンを呼び出す前記第1呼出命令文の後に第1時間測定用命令を埋め込むステップと、前記測定終了ルーチンを呼び出す前記第2呼出命令文の前に第2時間測定用命令を埋め込むステップとを具備する。
性能解析プログラム(50)の生成方法は、コンパイラ(30)によるソースプログラム(40)のコンパイル過程において、前記時間測定用命令埋め込み部(33)により、前記測定開始ルーチンを呼び出す前記第1呼出命令文の前に第3時間測定用命令を埋め込むステップと、前記測定終了ルーチンを呼び出す前記第2呼出命令文の後に第4時間測定用命令を埋め込むステップとを具備する。
本発明では、測定ルーチンを呼び出す前に時間測定用命令を実行することで、測定ルーチンの呼び出し回数が多い場合に、実際の実行時間と、測定時間との差が大きくなり、性能解析にあたえる影響が大きくなるという問題を解決する。
また、本発明を利用することにより、従来解析できなかったプロローグ処理及び、エピローグ処理の実行における変動時間を解決し、性能解析をより精密に行うよう改善する。
従来の時間測定方法では、呼ばれる回数が多いサブルーチンや関数に対する実行時間の計測に含まれる変動時間が多くなり、精度に問題があったが、本方式を適用することによりその、変動時間が計測されないため、より精密な時間の計測が可能となる。
すなわち、性能解析のための測定開始ルーチンCALL文の前後に、時間測定用命令を挿入、更に、測定終了ルーチンCALL文の前後に時間測定用命令を挿入することにより、プロローグ処理とエピローグ処理に必要な時間を除いた時間を測定することにより、より精密な性能解析を可能にする。
また、本発明によれば、コンピュータプログラムの性能チューニングを行う際、どのサブルーチンあるいは、関数がボトルネックとなっているかを調べるといった用途に適用できる。
以下に本発明の第1実施形態について添付図面を参照して説明する。
図1を参照して、本発明の性能解析プログラムがコンピュータ上で生成される場合を例に挙げて説明する。
コンピュータ100は、CPU10と、記憶部20を具備している。
CPU10は、コンピュータ100の各部を制御し、各種プログラムを実行する。
記憶部20は、コンパイラ30を保存している。また、記憶部20は、必要に応じて、ソースプログラム40や、性能解析プログラム50を保存する。
コンパイラ30は、人間がプログラミング言語で記述したソフトウェアの設計図(ソースコード)を、コンピュータが実行できる形式(オブジェクトコード)に変換するソフトウェアである。
ソースプログラム40は、人間がプログラミング言語で記述したソフトウェアの設計図(ソースコード)となるプログラムである。
性能解析プログラム50は、ソースプログラム40をコンパイルしたものであり、コンピュータが実行できる形式(オブジェクトコード)のプログラムである。
CPU10により実行されるコンパイラ30は、ソースプログラム40から性能解析プログラム50を生成する。
コンパイラ30は、ソースプログラム40のコンパイル時に性能解析に必要な処理を埋め込むための、手続き判定部31と、測定ルーチン埋め込み部32と、時間測定用命令埋め込み部33を有している。
なお、ルーチンとは特定の処理を実行する機能を持ったプログラムコードの集合体のことである。また、特に個別のプログラムコードとして独立していなくても、数行〜数十行程度のコードが特定の処理を行うために固まって配置されていれば、その部分をルーチンと呼ぶことができる。
ルーチンはプログラム内での立場によって大きく2つに分けられ、プログラムを開始する際に最初に呼び出され、プログラム全体の進行を管理するルーチンを「メインルーチン」、プログラムの実行中に他のルーチンから呼び出されて動作するルーチンを「サブルーチン」と呼ぶ。
手続き判定部31は、コンパイラ30に入力されたソースプログラム40のコンパイル過程において、処理中のステートメントがサブルーチンや関数を呼び出すCALL文であるかどうかを判定し、その結果を返す。
なお、ステートメントとは、プログラム内で何らかの処理を行う一つの完結した命令のことである。プログラムはこのようなステートメントの集まりで構成されている。
測定ルーチン埋め込み部32は、ソースプログラム40のコンパイル過程において、処理中のサブルーチン又は関数の入り口部分に測定開始ルーチンを呼び出すためのCALL文を埋め込み、処理中のサブルーチン又は関数の出口部分に測定終了ルーチンを呼び出すためのCALL文を埋め込む。
時間測定用命令埋め込み部33は、測定ルーチン埋め込み部32により埋め込まれた測定開始ルーチンを呼び出すCALL文の前後に時間測定用命令を埋め込む。更に、測定ルーチン埋め込み部32により埋め込まれた測定終了ルーチンを呼び出すCALL文の前後に時間測定用命令を埋め込む。
次に、図2のフローチャートを参照して、ソースプログラム40のコンパイル時に測定ルーチンを埋め込む処理の動作について詳細に説明する。
まず、コンパイラ30が、ソースプログラム40のコンパイル過程において、性能解析の調査対象となるソースプログラム40のステートメントの一つを最初のステートメントに設定し、調査を開始する(ステップS201)。
次に、コンパイラ30が、調査中のステートメントについて、調査が終了したかどうかを判定する(ステップS202)。
判定の結果、コンパイラ30は、全てのステートメントの調査が終わっていれば本処理を終了する。
全てのステートメントの調査が終わっていなければ、次に、コンパイラ30は手続き判定部31を用いて、調査中のステートメントが手続きの最初かどうかを判定する手続き判定を呼び出す(ステップS203)。
ステップS203の手続き判定について、図3を用いて説明する。
図3の手続き判定では、手続き判定部31は、処理中のステートメントがサブルーチンや関数であるかどうかを判定する(ステップS301)。
ステップS301の判定において、処理中のステートメントがサブルーチンや関数である場合、手続き判定部31は、キーワード"Yes"を示す値を戻り値として返す(ステップS302)。
また、ステートメントがサブルーチンや関数でない場合、手続き判定部31は、キーワード"No" を示す値を戻り値として返す(ステップS303)。
ステップS203の手続き判定において、手続き判定部31によりステートメントがサブルーチンや関数であると判定された場合、コンパイラ30は測定ルーチン埋め込み部32を用いて、測定ルーチン埋め込みを実行する(ステップS204)。
ステップS204の測定ルーチン埋め込みについて、図4を用いて説明する。
まず、測定ルーチン埋め込み部32は、処理中の手続きの先頭に、測定開始ルーチンを呼び出すためのCALL文を埋め込む(ステップS401)。
そして、測定ルーチン埋め込み部32は、処理中の手続きの最後に、測定終了ルーチンを呼び出すためのCALL文を埋め込む(ステップS402)。
ステップS204の測定ルーチン埋め込みの実行後、コンパイラ30は時間測定用命令埋め込み部33を用いて、時間測定用命令の埋め込みを実行する(ステップS205)。
ステップS205の時間測定用命令埋め込みについて、図5を用いて説明する。
まず、時間測定用命令埋め込み部33は、測定開始ルーチンを呼び出すCALLステートメントの前後に時間測定用命令を埋め込む(ステップS501)。
そして、時間測定用命令埋め込み部33は、測定終了ルーチンを呼び出すCALLステートメントの前後に時間測定用命令を埋め込む(ステップS502)。
最後に、コンパイラ30は、調査対象のステートメントを1つ進める処理を実行する(ステップS206)。
その後、コンパイラ30は、全てのステートメントを調査したかどうかを判定する処理へ戻る(ステップS202)。
次に、従来技術と本発明における性能解析プログラムの処理フローの比較により、本発明の性能解析プログラムの特徴を説明する。
ここでは例として、従来技術及び本発明のいずれにおいても、性能解析プログラムはCPUを備えたコンピュータ上で実行されるものとする。
従って、CPUが性能解析プログラムを実行するものとして説明する。
但し、前述した実行環境は説明のための例に過ぎず、実際には、本発明の性能解析プログラムの実行環境はコンピュータ上に限定されるものではない。
まず、図6を参照して、従来の性能解析プログラムの特徴を説明する。
従来の性能解析プログラムにおいて、元の関数の実行中、測定ルーチンの呼び出しが行われた場合、測定ルーチンの処理に移行する(ステップS601)。
測定ルーチンの処理の開始時において、スタック領域の確保や、レジスタの退避といったリンケージ規約に基づくプロローグ処理が実行される(ステップS602)。
従来の性能解析プログラムでは、測定ルーチンのプロローグ処理が行われた後に、時間測定を終了する方式になっており、時間取得命令を実行して時間測定を終了する(ステップS603)。
なお、実行中の測定ルーチンが測定開始ルーチンの時は、直前の測定終了ルーチンのエピローグ処理直前から当該測定開始ルーチンのプロローグ処理直後までの間に実行された元の関数に対する時間測定を終了する処理に該当する。
実行中の測定ルーチンが測定終了ルーチンの時は、直前の測定開始ルーチンのエピローグ処理直前から当該測定終了ルーチンのプロローグ処理直後までの間に実行されたサブルーチンに対する時間測定を終了する処理に該当する。
時間測定を終了した後、実行中の測定ルーチンを呼び出した、元の関数を特定する処理が実行される(ステップS604)。
関数を特定することにより、どの関数に対する性能解析の結果であるか識別することができ、関数毎の性能情報の集計や、テーブル格納による性能情報の管理が可能となる。
元の関数を特定した後、性能解析の計算やその他の処理が実行される(ステップS605)。
従来の性能解析プログラムでは、前述のその他の処理が行われた後に、時間測定を開始する方式になっており、ここで時間取得命令を実行して時間測定を開始する(ステップS606)。
なお、実行中の測定ルーチンが測定開始ルーチンの時は、当該測定開始ルーチンのエピローグ処理直前から当該測定終了ルーチンのプロローグ処理直後までの間に実行されるサブルーチンに対する時間測定を開始する処理に該当する。
実行中の測定ルーチンが測定終了ルーチンの時は、当該測定終了ルーチンのエピローグ処理直前から次の測定開始ルーチンのプロローグ処理直後までの間に実行される元の関数に対する時間測定を開始する処理に該当する。
時間測定を開始した後、スタックの開放やレジスタの復帰といったリンケージ規約に基づくエピローグ処理が実行される(ステップS607)。
測定ルーチンを終了する際、測定ルーチンの処理から得られた値のうち、元の関数から要求されている値や性能解析処理に必要な値を戻り値として返す(ステップS608)。
測定ルーチンの終了後、元の関数の実行を再開する(ステップS609)。
なお、元の関数の実行中、再び測定ルーチンを呼び出す処理が実行されるときは、ステップS601の処理に移行する。
従来の性能解析プログラムは、前述の過程を経て測定時間の計測が行われるが、測定ルーチンの間に、キャッシュミスや分岐予測ミスが発生し、実行の度に実行時間がぶれるという問題がある。キャッシュミスとは、一時的に保存した情報であるキャッシュにアクセスしたが、所望するデータが見つからないことである。
図7を参照して、本発明の性能解析プログラムの特徴を説明する。
前述したように、CPUを備えたコンピュータ上で本発明の性能解析プログラムが実行される場合について例示する。
ここでは、CPUが性能解析プログラムを実行するものとして説明する。
本発明の性能解析プログラムでは、測定ルーチンを呼び出す直前に、時間測定を終了する方式になっており、時間取得命令を実行して時間測定を終了する(ステップS701)。
なお、実行中の測定ルーチンが測定開始ルーチンの時は、直前の測定終了ルーチンの終了直後から当該測定開始ルーチンの開始直前までの間に実行された元の関数に対する時間測定を終了する処理に該当する。
実行中の測定ルーチンが測定終了ルーチンの時は、直前の測定開始ルーチンの終了直後から当該測定終了ルーチンの開始直前までの間に実行されたサブルーチンに対する時間測定を終了する処理に該当する。
本発明の性能解析プログラムでは、時間測定を終了する処理の後、測定ルーチンの呼び出しを行う(ステップS702)。これにより、測定ルーチンが呼び出され、測定ルーチンの処理が開始される。
測定ルーチンの処理の開始時において、スタック領域の確保や、レジスタの退避といったリンケージ規約に基づくプロローグ処理が実行される(ステップS703)。
実行中の測定ルーチンを呼び出した、元の関数を特定する処理が実行される(ステップS704)。
関数を特定することにより、どの関数に対する性能解析の結果であるか識別することができ、関数毎の性能情報の集計や、テーブル格納による性能情報の管理が可能となる。
元の関数を特定した後、性能解析の計算やその他の処理が実行される(ステップS705)。
時間測定を開始した後、スタックの開放やレジスタの復帰といったリンケージ規約に基づくエピローグ処理が実行される(ステップS706)。
測定ルーチンを終了する際、測定ルーチンの処理から得られた値のうち、元の関数から要求されている値や性能解析処理に必要な値を戻り値として返す(ステップS707)。
測定ルーチンの終了後、元の関数の実行を再開する(ステップS708)。
本発明の性能解析プログラムでは、元の関数の実行が再開された後に、時間測定を開始する方式となっており、ここで時間取得命令を実行して時間測定を開始する(ステップS709)。
本発明では、測定ルーチンを呼び出すCALL文の直前又は直後に、測定ルーチンの一部である時間測定部分に関して、部分的なインライン処理を行うことにより、測定ルーチンを呼び出してから、時間測定部分までにかかる時間の誤差を減らすことを特徴としている。
図8、図9を参照して、図6、図7で説明した従来の性能解析プログラムと本発明の性能解析プログラムの例を示す。
図8が従来の性能解析プログラムの例であり、図9が本発明の性能解析プログラムの例である。
図8に記載の「call measuring_start()」は、測定開始ルーチンを呼び出すCALL文であり、「call measuring_end()」は、測定終了ルーチンを呼び出すCALL文である。
従来の性能解析プログラムは、測定開始ルーチン、測定終了ルーチンのいずれにおいても、ルーチン内のプロローグ処理の直後とエピローグ処理の直前に時間取得命令が実行される。
図9に記載の「call measuring_start()」も図8の場合と同様に、測定開始ルーチンを呼び出すCALL文であり、「call measuring_end()」も、測定終了ルーチンを呼び出すCALL文である。
本発明の性能解析プログラムは、測定開始ルーチンの呼び出しの前後、測定終了ルーチンの呼び出しの前後に、時間取得命令が実行される。
従来の方式では、図8に示すように、時間測定命令を測定ルーチンのプロローグ処理後、エピローグ処理前に実行していたためにプロローグ処理やエピローグ処理時に発生する変動時間を正確に測定時間に反映できていなかった。
この問題を解決するために、図9に示すように、性能解析のための測定開始ルーチンのCALL文の前後に時間測定用命令を挿入、更に、測定終了ルーチンのCALL文の前後に時間測定用命令を挿入し、プロローグ処理とエピローグ処理に必要な時間を除いた時間を測定することによって、より精密な性能解析を可能にする。
図1は、本発明の性能解析プログラムの生成方法の実行環境の概略構成を示す図である。 図2は、本発明の性能解析プログラムの生成過程のフローチャートを示す図である。 図3は、手続き判定のフローチャートを示す図である。 図4は、測定ルーチン埋め込みのフローチャートを示す図である。 図5は、時間測定用命令埋め込みのフローチャートを示す図である。 図6は、従来の性能解析プログラムの処理手順のフローチャートを示す図である。 図7は、本発明の性能解析プログラムの処理手順のフローチャートを示す図である。 図8は、従来の性能解析プログラムの一例を示す図である。 図9は、本発明の性能解析プログラムの一例を示す図である。
符号の説明
10… CPU
20… 記憶部
30… コンパイラ
31… 手続き判定部
32… 測定ルーチン埋め込み部
33… 時間測定用命令埋め込み部
40… ソースプログラム
50… 性能解析プログラム
100… コンピュータ

Claims (9)

  1. 性能解析を開始するための測定開始ルーチンを実行するステップと、
    前記性能解析を終了するための測定終了ルーチンを実行するステップと、
    前記測定開始ルーチンを呼び出す第1呼出命令文の前又は後の少なくとも一方にある時間測定用命令を実行するステップと、
    前記測定終了ルーチンを呼び出す第2呼出命令文の前又は後の少なくとも一方にある時間測定用命令を実行するステップと
    をコンピュータに実行させる
    性能解析プログラム。
  2. 請求項1に記載の性能解析プログラムにおいて、
    前記測定開始ルーチンを呼び出す前記第1呼出命令文の後の第1時間測定用命令は、前記測定開始ルーチンの直後に実行される処理に対する時間測定の開始時間を取得するための命令であり、
    前記測定終了ルーチンを呼び出す前記第2呼出命令文の前の第2時間測定用命令は、前記測定終了ルーチンの直前に実行された処理に対する時間測定の終了時間を取得するための命令である
    性能解析プログラム。
  3. 請求項1又は2に記載の性能解析プログラムにおいて、
    前記測定開始ルーチンを呼び出す前記第1呼出命令文の前の第3時間測定用命令は、前記測定開始ルーチンの直前に実行された処理に対する時間測定の終了時間を取得するための命令であり、
    前記測定終了ルーチンを呼び出す前記第2呼出命令文の後の第4時間測定用命令は、前記測定終了ルーチンの直後に実行される処理に対する時間測定の開始時間を取得するための命令である
    性能解析プログラム。
  4. 請求項1乃至3のいずれか一項に記載の性能解析プログラムにおいて、
    少なくとも一つのサブルーチンを有し、
    前記性能解析は、前記サブルーチンの各々に対して個別に実施される
    性能解析プログラム。
  5. 請求項1乃至4のいずれか一項に記載の性能解析プログラムにおいて、
    少なくとも一つの関数を有し、
    前記性能解析は、前記関数の各々に対して個別に実施される
    性能解析プログラム。
  6. ソースプログラムのコンパイル過程において、
    前記ソースプログラムに含まれる少なくとも一つの命令文がサブルーチン又は関数であるか否かを判定するステップと、
    前記サブルーチン又は前記関数の先頭に測定開始ルーチンを呼び出す第1呼出命令文を埋め込み、前記サブルーチン又は前記関数の末尾に測定終了ルーチンを呼び出す第2呼出命令文を埋め込むステップと、
    前記測定開始ルーチンを呼び出す前記第1呼出命令文の前又は後の少なくとも一方に時間測定用命令を埋め込むステップと、
    前記測定終了ルーチンを呼び出す前記第2呼出命令文の前又は後の少なくとも一方に時間測定用命令を埋め込むステップと
    を具備する性能解析プログラムの生成方法。
  7. 請求項6に記載の性能解析プログラムの生成方法において、
    前記測定開始ルーチンを呼び出す前記第1呼出命令文の後に第1時間測定用命令を埋め込むステップと、
    前記測定終了ルーチンを呼び出す前記第2呼出命令文の前に第2時間測定用命令を埋め込むステップと
    を具備する性能解析プログラムの生成方法。
  8. 請求項6又は7に記載の性能解析プログラムの生成方法において、
    前記測定開始ルーチンを呼び出す前記第1呼出命令文の前に第3時間測定用命令を埋め込むステップと、
    前記測定終了ルーチンを呼び出す前記第2呼出命令文の後に第4時間測定用命令を埋め込むステップと
    を具備する性能解析プログラムの生成方法。
  9. 請求項6乃至8のいずれか一項に記載の性能解析プログラムの生成方法を用いて生成された性能解析プログラム。
JP2004174555A 2004-06-11 2004-06-11 性能解析プログラム及び性能解析プログラムの生成方法 Pending JP2005352894A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004174555A JP2005352894A (ja) 2004-06-11 2004-06-11 性能解析プログラム及び性能解析プログラムの生成方法
US11/150,259 US20050278145A1 (en) 2004-06-11 2005-06-13 Performance analysis program and method for generating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004174555A JP2005352894A (ja) 2004-06-11 2004-06-11 性能解析プログラム及び性能解析プログラムの生成方法

Publications (1)

Publication Number Publication Date
JP2005352894A true JP2005352894A (ja) 2005-12-22

Family

ID=35461599

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004174555A Pending JP2005352894A (ja) 2004-06-11 2004-06-11 性能解析プログラム及び性能解析プログラムの生成方法

Country Status (2)

Country Link
US (1) US20050278145A1 (ja)
JP (1) JP2005352894A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009015734A (ja) * 2007-07-06 2009-01-22 Ntt Data Corp プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007145903A2 (en) 2006-06-05 2007-12-21 Acumem Ab System for and method of capturing application characteristics data from a computer system and modeling target system
US8443341B2 (en) 2006-11-09 2013-05-14 Rogue Wave Software, Inc. System for and method of capturing application characteristics data from a computer system and modeling target system
US8539455B2 (en) * 2007-03-26 2013-09-17 Rogue Wave Software, Inc. System for and method of capturing performance characteristics data from a computer system and modeling target system performance
EP2648105B8 (en) * 2012-04-04 2019-06-05 Accenture Global Services Limited Database performance analysis
KR101991687B1 (ko) * 2012-11-23 2019-06-24 삼성전자 주식회사 동적 라이브러리 프로파일링 방법, 이를 기록한 컴퓨터로 읽을 수 있는 기록 매체 및 동적 라이브러리 프로파일링 시스템

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6144961A (en) * 1995-08-31 2000-11-07 Compuware Corporation Method and system for non-intrusive measurement of transaction response times on a network
US6108700A (en) * 1997-08-01 2000-08-22 International Business Machines Corporation Application end-to-end response time measurement and decomposition
US6041352A (en) * 1998-01-23 2000-03-21 Hewlett-Packard Company Response time measuring system and method for determining and isolating time delays within a network
US7051339B2 (en) * 2001-06-29 2006-05-23 Goldman, Sachs & Co. System and method to measure latency of transaction information flowing through a computer system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009015734A (ja) * 2007-07-06 2009-01-22 Ntt Data Corp プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム

Also Published As

Publication number Publication date
US20050278145A1 (en) 2005-12-15

Similar Documents

Publication Publication Date Title
JP3707727B2 (ja) プログラムの最適化方法及びこれを用いたコンパイラ
US8336038B2 (en) System and method for parallel execution of a program
US7016807B2 (en) Device and method for monitoring a program execution
JPH11259437A (ja) 不要バリア命令の削減方式
US8689198B2 (en) Compiling system and method for optimizing binary code
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
JPH06314203A (ja) コンパイラの最適化方法および装置
JPH1097430A (ja) 最適化のためにアセンブリコードルーチンをソースコードルーチンに挿入する方法およびそのシステム
US7908592B2 (en) Software/hardware partitioning program and method
JP2017228029A (ja) 並列化方法、並列化ツール、車載装置
US6854110B2 (en) System and method for obtaining scratch registers in computer executable binaries
US20050278145A1 (en) Performance analysis program and method for generating the same
EP3486811A1 (en) Simulation device, simulation system, simulation method and simulation program
US9182960B2 (en) Loop distribution detection program and loop distribution detection method
JP2017204201A (ja) 情報処理装置、コンパイル方法、およびコンパイルプログラム
JPH11167492A (ja) ループ飛び出し文を含むループに対する配列サマリ解析方法
EP0790555B1 (en) Compile apparatus and method
CN101164042A (zh) 在条件指令将不执行时停止等待源操作数
RU2206119C2 (ru) Способ получения объектного кода
JP4983238B2 (ja) 模擬ソースプログラム生成プログラム及び装置、並びに情報処理方法
JP5021584B2 (ja) マイコンシミュレータ、そのシミュレーション方法、プログラム、及びコンピュータ読み取り可能な媒体
JP6558310B2 (ja) 並列化方法、並列化ツール
US20170344351A1 (en) Information processing apparatus, compiling management method, and recording medium
JP2008071065A (ja) インライン展開を行うコンパイル装置、方法、プログラム、記憶媒体
JP5353587B2 (ja) 組み込み用プログラム開発装置及び組み込み用プログラム開発方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080318

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090108

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20091026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100114

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100202

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20100312