JP2009015734A - プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム - Google Patents
プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム Download PDFInfo
- Publication number
- JP2009015734A JP2009015734A JP2007179079A JP2007179079A JP2009015734A JP 2009015734 A JP2009015734 A JP 2009015734A JP 2007179079 A JP2007179079 A JP 2007179079A JP 2007179079 A JP2007179079 A JP 2007179079A JP 2009015734 A JP2009015734 A JP 2009015734A
- Authority
- JP
- Japan
- Prior art keywords
- statement
- probe
- processing time
- processing
- block
- 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.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【解決手段】ソースプログラムをコンパイルする際に、プローブ挿入部21は、ソースプログラムの構文情報の解析を行い、計測対象のステートメントに対して、計測用のプローブを挿入するとともに、そのステートメントの構文情報をステートメント構文情報記憶部143に記憶する。そして、そのソースプログラムから作成された目的プログラムが実行され、プローブが挿入されたステートメントの処理が開始・終了されると、計測部24は、そのステーメントの処理の開始・終了の時刻等を記録する。そして、その記録情報から、ステートメント情報集計部25はステートメントの処理時間を集計して、ステートメント情報表示部26がその集計結果を表示する。
【選択図】図7
Description
また、特許文献2は、メソッド間の呼出関係をログへ出力するための技術を開示している
1つ又は複数のメソッドを含むソースプログラムを解析して、メソッドに含まれるステートメントを特定する、ステートメント特定手段と、
前記ステートメント特定手段によって特定されたステートメントの処理の前後に、処理時間を計測するためのプローブを挿入するプローブ挿入手段と、
前記プローブ挿入手段によってプローブが挿入されたソースプログラムをコンパイルして作成された目的プログラムの実行により前記プローブが挿入されたステートメントの処理が開始又は終了する毎に、該ステートメントの処理が開始か終了かを表す情報とそのときの時刻と該ステートメントの処理が属するスレッドの識別情報とを対応付けて記憶するステートメント情報記憶手段と、
前記ステートメント情報記憶手段に記憶されている情報に基づいて、ステートメントの処理時間を算出するステートメント処理時間算出手段と、
前記ステートメント処理時間算出手段で算出したステートメントの処理時間を表示する処理時間表示手段と、
を備える。
前記プローブ挿入手段は、前記プローブ挿入対象メソッド記憶手段に識別情報が記憶されているメソッドに含まれる前記ステートメント特定手段で特定したステートメントの処理の前後に、処理時間を計測するためのプローブを挿入してもよい。
前記プローブ挿入手段は、前記ステートメント特定手段で特定したステートメントであって、そのカテゴリに属するステートメントを前記プローブの挿入対象とすることを示す管理情報が前記プローブ挿入対象ステートメント記憶手段に記憶されているステートメントの処理の前後に、処理時間を計測するためのプローブを挿入してもよい。
前記プローブ挿入手段と前記ブロック用プローブ挿入手段とによってプローブとブロック用プローブとが挿入されたソースプログラムをコンパイルして作成された目的プログラムの実行により前記ブロック用プローブを挿入したブロックの処理が開始する度に、該ブロックの開始を表す情報とそのときの時刻と該ブロックの処理が属するスレッドの識別情報とを対応付けて記憶するブロック情報記憶手段と、
前記ステートメント情報記憶手段と前記ブロック情報記憶手段とに記憶されている情報に基づいて、ブロックの処理時間を算出するブロック処理時間算出手段と、をさらに備え、
前記処理時間表示手段は、前記ブロック処理時間算出手段で算出したブロックの処理時間を表示してもよい。
前記処理時間表示手段は、前記内部処理時間算出手段で算出したステートメントの内部処理時間を表示してもよい。
複数のメソッドから構成されたソースプログラムを解析して、メソッドに含まれるステートメントを特定する、ステートメント特定ステップと、
前記ステートメント特定ステップで特定したステートメントの処理の前後に、処理時間を計測するためのプローブを挿入するプローブ挿入ステップと、
前記プローブ挿入ステップによってプローブが挿入されたソースプログラムをコンパイルして作成された目的プログラムを実行した際の、前記プローブ挿入ステップでプローブを挿入したステートメントの処理が開始又は終了する毎に、該ステートメントの処理が開始か終了かを表す情報とそのときの時刻と該ステートメントの処理が属するスレッドの識別情報とを対応付けて記憶するステートメント情報記憶ステップと、
前記ステートメント情報記憶ステップに記憶されている情報に基づいて、ステートメントの処理時間を算出するステートメント処理時間算出ステップと、
前記ステートメント処理時間算出ステップで算出したステートメントの処理時間を表示する処理時間表示ステップと、
を備えることを特徴とする。
コンピュータを、
複数のメソッドから構成されたソースプログラムを解析して、メソッドに含まれるステートメントを特定する、ステートメント特定手段と、
前記ステートメント特定手段で特定したステートメントの処理の前後に、処理時間を計測するためのプローブを挿入するプローブ挿入手段と、
前記プローブ挿入手段によってプローブが挿入されたソースプログラムをコンパイルして作成された目的プログラムを実行した際の、前記プローブ挿入手段でプローブを挿入したステートメントの処理が開始又は終了する毎に、該ステートメントの処理が開始か終了かを表す情報とそのときの時刻と該ステートメントの処理が属するスレッドの識別情報とを対応付けて記憶するステートメント情報記憶手段と、
前記ステートメント情報記憶手段に記憶されている情報に基づいて、ステートメントの処理時間を算出するステートメント処理時間算出手段と、
前記ステートメント処理時間算出手段で算出したステートメントの処理時間を表示する処理時間表示手段と、
して機能させる。
プログラムプロファイリング装置1は、図1に示すように、通信部11と、入力部12と、出力部13と、記憶部14と、入出力I/F部15と、制御部16と、を備え、各部はバス17を介して互いに接続されている。
また、メソッドは1つ以上のステートメントから構成されているものとする。また、ステートメントは、1つ又は複数の処理単位(ブロック)から構成されている場合もある。例えば、条件分岐処理を制御するステートメント「if」では、分岐条件毎に複数のブロックを有する場合がある。
また、記憶部14は、図2に示すように、プローブ挿入対象メソッド記憶部141と、プローブ挿入対象ステートメント記憶部142と、ステートメント構文情報記憶部143と、ステートメント詳細性能ログ記憶部144と、を備える。
親ステートメント/ブロック番号は、当該ステートメント/ブロックが別のステートメント/ブロックから実行される場合、その実行元のステートメント/ブロックのステートメント/ブロック番号である。
種類(カテゴリ)は、当該ステートメント/ブロックが属する種類(カテゴリ)を表す情報である。
ソースプログラム名は、当該ステートメント/ブロックを含むソースプログラムの識別情報(プログラム名)である。
開始位置情報は、当該ステートメント/ブロックのソースプログラム内での開始位置を、バイト数および行番号とで表した情報である。
終了位置情報は、当該ステートメント/ブロックのソースプログラム内での終了位置を、バイト数および行番号とで表した情報である。
ステートメント詳細性能ログ記憶部144は、図6に示すように、メソッド/ブロックを処理する度に、ログIDと、処理が実行された時刻(コンピュータあるいはプログラム固有の時刻でも、現在日時等でもよい)と、処理が属するスレッドの識別情報(スレッド名)と、ステートメント番号と、種類情報とを記憶する。
なお、この種類情報は、実行されたメソッドの処理の開始/終了、又は実行されたブロックの開始を示す情報である。
また、制御部16は、タイマ、例えば、ソフトウェアタイマを備える。このタイマにより、制御部16は、後述するプロファイリング処理で、ステートメントの処理の開始・終了時刻等を取得する。
また、プローブ挿入部21は、プローブを挿入したステートメントを、ステートメント構文情報記憶部143に登録する。
このステートメントの内部処理時間とは、ステートメントの処理時間から、当該ステートメントが含むブロックの処理時間を除いた時間を意味する。
また、予め、特開2004−94374号公報に開示されている技術等を用いて、目的プログラムを実行した際のメソッド毎の処理時間の計測が行われ、ボトルネックとなるメソッドが特定されているものとする。そして、このボトルネックとして特定されたメソッドは、ユーザの準備作業等により、プローブ挿入対象メソッド記憶部141に登録されているものとする。
また、どのカテゴリに属するステートメントをプロファイリングの対象とするのかを示す情報も、ユーザの準備作業等により、プローブ挿入対象ステートメント記憶部142に予め記憶されているものとする。
このコンパイル処理の際、プローブ挿入部21は、計測対象とするメソッドのステートメントに性能計測コード(プローブ)を挿入すると共に、該ステートメントに関する情報をステートメント構文情報記憶部143に記憶する(図8、ステップS101)。
この目的プログラムの実行の際、計測部24は、処理されるステートメントの開始や、終了を示す情報やそのときの時刻などを計測して記録する(ステップS102)。
以上で、プロファイリング処理は終了する。
まず、プローブ挿入部21は、記憶部14に記憶されているソースプログラムの構文を解析して、ソースプログラムを抽象構文木(AST)と呼ばれる木構造に変換する(図9、ステップS201)。なお、この処理は一般的なコンパイラの構文解析の処理によって行われる処理と実質的に同等な処理である。
ここで、図10に抽象構文木の例を示す。この図に示すように、抽象構文木は、ソースプログラムを構成するパッケージ、クラス、フィールド、メソッド、ステートメント、ブロックをノードとして、木構造で表現したものであり、ソースプログラムの構造が明確になる。
プローブ挿入対象のメソッドであると判断した場合(ステップS203;Yes)、プローブ挿入部21は、該メソッドに含まれるステートメントを1つ選択する(ステップS204)。
なお、該ステートメントがブロックを含んでいる場合には、該ブロックに対して、ブロック番号(ID)を発行する。
図11(A)に示すソースプログラムには、メソッド「MethodA」が記述されている。そして、このメソッド「MethodA」には、条件分岐処理を制御するステートメント「if」が含まれている。また、ステートメント「if」は、分岐条件により2つのブロックB1、B2を含んでいる。このようなソースプログラムに対して、プローブが挿入された例を図11(B)に示す。
また、メソッド「EnterBlock」は、ブロック開始プローブに相当し、ステートメント「IF」に含まれるブロックB1、B2の処理の開始直前に挿入される。またメソッド「EnterBlock」の引数「1235」および「1236」は、ステップS206の処理で各ブロックに付与されたブロック番号である。
また、メソッド「ExitStatement」は、ステートメント終了プローブに相当し、ステートメント「IF」の処理の終了直後に挿入される。
選択していないステートメントが有ると判別した場合(ステップS209;Yes)、プローブ挿入部21は、ステップS204〜ステップS208の処理を繰り返す。
選択していないメソッドが無いと判別した場合(ステップS209;No)、プローブ挿入部21は、処理をステップS210に移す。
選択していないメソッドが有ると判別した場合(ステップS210;Yes)、プローブ挿入部21は、ステップS202に処理を移す。
選択していないメソッドが無いと判別した場合(ステップS210;No)、目的プログラム生成部22は、プローブ挿入済のソースプログラムから、目的プログラムを作成し(ステップS211)、プローブ挿入処理は終了する。
なお、この目的プログラムの作成は、一般的なコンパイラによる公知の手法によって行えばよい。すなわち、目的プログラム生成部22は、プローブ挿入済のソースプログラムから、JAVA(登録商標)仮想マシンのバイトコード(中間コード)で記述された目的プログラムを作成する。
プログラム実行部23が、プローブ挿入済みの目的プログラムを実行して、目的プログラムのメソッドに埋め込まれているプローブが実行されると、計測部24は、メソッドに含まれるステートメントの開始時刻や終了時刻等の計測を行う(図12、ステップS301)。
そして、計測部24は、計測結果をステートメント詳細性能ログ記憶部144に記憶する(ステップS302)。
以上で計測処理は終了する。
ステートメント開始プローブが実行されると、計測部24は、そのときの時刻と、スレッド名と、ステートメント番号とを取得する(ステップS301)。なお、この時刻の取得は、例えば、制御部16が備えるタイマによって行う。また、スレッド名は、例えば、公知のAPIを実行することで取得する。また、ステートメント番号は、例えば、ステートメント開始プローブの引数に設定されているので、それを取得する。
以上で、計測処理は終了する。
まず、ステートメント情報集計部25は、ステートメント詳細性能ログ記憶部144から、先頭のエントリを1つ読み込む(図13、ステップS401)。
そして、ステートメント情報集計部25は、処理をステップS401に移し、ステートメント詳細性能ログ記憶部144から、次の先頭のエントリを1つ読み込み、ステップS402からの処理を繰り返す。
次に、ステートメント情報集計部25は、ステップS407で、種類情報が「ブロック開始」を示すと判断したエントリに含まれる実行時間(即ちブロックの開始時間)を取得する(ステップS4102)。
そして、ステートメント情報集計部25は、取得したステートメントの終了時間からブロックの開始時間を減算した時間をブロックの処理時間として算出する(ステップS4103)。
そして、ステートメント情報集計部25は、算出したブロックの処理時間と、当該ブロックの識別情報(ブロック番号等)とを対応付けてRAM163に記録する(ステップS4104)。
以上で、ブロック処理時間算出・記録処理(ステップS410)は終了する。
次に、ステートメント情報集計部25は、ステップS412で種類情報が「ブロック開始」を示すと判断したエントリに含まれる処理時間(ブロックの開始時間)を取得する(ステップS4132)。
そして、ステートメント情報集計部25は、取得した前ブロックの開始時間からブロックの開始時間を減算した時間をブロックの処理時間として算出する(ステップS4133)。
そして、ステートメント情報集計部25は、算出したブロックの処理時間と、当該ブロックの識別情報(ブロック番号等)とを対応付けてRAM163に記録する(ステップS4134)。
以上で、ブロック処理時間算出・記録処理(ステップS413)は終了する。図14に戻り、続いて、ステートメント情報集計部25は、処理をステップS411に移す。
次に、ステートメント情報集計部25は、ステップS412で、種類情報が「ステートメント開始」を示すと判断したエントリに含まれる実行時間(即ちステートメントの開始時間)を取得する(ステップS4142)。
そして、ステートメント情報集計部25は、取得したブロックの開始時間からステートメントの開始時間を減算した時間を、ステートメントの内部処理時間として算出する(ステップS4143)。
そして、ステートメント情報集計部25は、算出したステートメントの内部処理時間と、当該ステートメントの識別情報(ステートメント番号等)とを対応付けてRAM163に記録する(ステップS4144)。
以上で、ステートメント内部処理時間算出・記録処理(ステップS414)は終了する。図13に戻り、続いて、ステートメント情報集計部25は、処理をステップS408に移す。
次に、ステートメント情報集計部25は、ステップS407、又はステップS412で、種類情報が「ステートメント開始」を示すと判断したエントリに含まれる実行時間(即ちステートメントの開始時間)を取得する(ステップS4082)。
そして、ステートメント情報集計部25は、取得したステートメントの終了時間から、ステートメントの開始時間を減算した時間をステートメントの処理時間として算出する(ステップS4083)。
そして、ステートメント情報集計部25は、算出したステートメントの処理時間と、当該ステートメントの識別情報(ステートメント番号等)とを対応付けてRAM163に記録する(ステップS4084)。
以上で、ステートメント処理時間算出・記録処理(ステップS408)は終了する。
読みこんでいないエントリが有ると判別した場合(ステップS409;Yes)、ステートメント情報集計部25は、ステートメント詳細性能ログ記憶部144から先頭のエントリを取得し(ステップS401)、以下ステップS402からの処理を繰り返す。
読みこんでいないエントリがないと判別した場合(ステップS409;No)、ステートメント情報集計部25は、上述の一連の処理でRAM163に記憶してきたステートメントの処理時間、内部処理時間と、ブロックの処理時間とを一覧表示する画面を出力部13に表示する(ステップS415)。
以上で集計・表示処理は終了する。
具体例として、ステートメント詳細性能ログ記憶部144には、図17に示すような情報が記憶されているものとする。すなわち、ステートメント番号S1を有するステートメント(以下、ステートメント「S1」とする)が開始された後、ブロック番号B1を表すブロック(以下、ブロック「B1」とする)と、ブロック「B2」とが実行され、その後ステートメント「S2」が開始、終了した後、ステートメント「S1」が終了していることが、このステートメント詳細性能ログ記憶部144に記録されている。
よって、この処理により、スタックは図18(C)に示すような状態になる。
そして、ステートメント情報集計部25は、ステップS407で種類情報が「ステートメント開始」を示すと判断したログID「4」を有するエントリに含まれる実行時間(ステートメント開始時間)「1600」とステートメント番号「S2」とを取得する(ステップS4082)。
そして、ステートメント情報集計部25は、取得したステートメント終了時間「2100」からステートメント開始時間「1600」を減算した時間「500」をステートメント番号「S2」を有するステートメントの処理時間として算出する(ステップS4083)。
そして、ステートメント情報集計部25は、算出したステートメントの処理時間「500」と、ステートメント番号「S2」とを対応付けてRAM163に図19のL1に示すように記憶する(ステップS4104)。
以上でステートメント処理時間算出・記録処理は終了する。
よって、この処理により、スタックは図18(D)に示すような状態になる。
そして、ステートメント情報集計部25は、ステップS407で種類情報が「ブロック開始」を示すと判断したログID「3」を有するエントリに含まれる実行時間(ブロック開始時間)「1450」とブロック番号「B2」とを取得する(ステップS4102)。
そして、ステートメント情報集計部25は、取得したステートメント終了時間「2800」からブロック開始時間「1450」を減算した時間「1350」をブロック「B2」を有するブロックの処理時間として算出する(ステップS4103)。
そして、ステートメント情報集計部は、算出したブロックの処理時間「1350」と、ブロック番号「B2」とを対応付けて、RAM163に図19のL2に示すように記憶する(ステップS4104)。
以上で、ブロック処理時間算出・記録処理は終了する。
よって、この処理により、スタックは図18(E)に示すような状態になる。
そして、ステートメント情報集計部25は、ステップS412で種類情報が「ブロック開始」を示すと判断したログID「2」を有するエントリに含まれる実行時間(ブロック開始時間)「1200」および、ブロック番号「B1」を取得する(ステップS4132)。
そして、ステートメント情報集計部25は、取得した前ブロック開始「1450」からブロック開始時間「1200」を減算した時間「250」を、ブロック番号「B1」を有するブロックの処理時間として算出する(ステップS4133)。
そして、ステートメント情報集計部25は、算出したブロックの処理時間「250」と、ブロック番号「B1」とを対応付けて、RAM163に図19のL3に示すように記憶する(ステップS4134)。
以上でブロック処理時間算出・記録処理は終了する。
よって、この処理により、スタックは図18(F)に示すような状態になる。
そして、ステートメント情報集計部25は、ステップS412で種類情報が「ステートメント開始」を示すと判断したログID「1」を有するエントリに含まれる実行時間(ステートメント開始時間)「1000」および、ステートメント番号「S1」を取得する(ステップS4142)。
そして、ステートメント情報集計部25は、取得したブロック開始時間「1200」からステートメント開始時間「1000」を減算した時間「200」をステートメント番号「S1」を有するステートメントの内部処理時間として算出する(ステップS4143)。
そして、ステートメント情報集計部25は、算出したステートメントの内部処理時間「200」と、ステートメント番号「S1」とを対応付けて、RAM163に図19のL4に示すように記憶する(ステップS4144)。
以上でステートメント内部処理時間算出・記録処理は終了する。
そして、ステートメント情報集計部25は、ステップS412で種類情報が「ステートメント開始」を示すと判断したログID「1」を有するエントリに含まれる実行時間(ステートメント開始時間)「1000」とステートメント番号「S1」とを取得する(ステップS4082)。
そして、ステートメント情報集計部25は、取得したステートメント終了時間「2800」からステートメント開始時間「1000」を減算した時間「1800」をステートメント番号「S1」を有するステートメントの処理時間として算出する(ステップS4083)。
そして、ステートメント情報集計部25は、算出したステートメントの処理時間「1800」と、ステートメント番号「S1」とを対応付けて、RAM163に図19のL5に示すように記憶する。
以上でステートメント処理時間算出・記録処理は終了する。
なお、この画面に表示されているステートメントやブロックの種類や、ステートメントやブロックがどのステートメントから呼ばれているのかの関係を示す情報やメソッド名等は、ステートメント構文情報記憶部143を参照して取得すればよい。
そのため、メソッドの処理時間の算出を、ステートメントの処理単位で行うことができる。
また、ソースプログラムに挿入する計測用のプローブは、ステートメントの処理の開始、終了時点および、ブロックの開始時点に挿入し、ブロックの終了時点には挿入しない。そのため、挿入するプローブの数を少なくすることができ、プロファイリング処理による実行環境への負荷は小さくなり、より実際の実行環境に近い条件で計測を行うことができる。
例えば、ステートメント詳細性能ログ記憶部144に記憶されている情報から、以下の(a)〜(c)に示すような方法で、処理時間を求めてもよい。
(a)ステートメントの処理時間の算出方法
エントリを先頭から読み込んでいく。そして、種類情報「ステートメント開始」を有するエントリを読み込んだ後、このエントリと同一のスレッド名、ステートメント番号であり、種類情報「ステートメント終了」を有するエントリが最初に見付かった時点で、両者のエントリに含まれる実行時間の差を該ステートメントの処理時間として求める。
(b)ブロックの処理時間の算出方法
エントリを先頭から読み込んでいく。そして、種類情報「ブロック開始」を有するエントリを読み込んだ後、このエントリと同一のスレッド名であり、種類情報「ブロック開始」又は「ステートメント終了」を有するエントリを最初に読み込んだ時点で、両者のエントリに含まれる実行時間の差を、最初に読み込んだ方のエントリに対応するブロックの処理時間として求める。
(c)ステートメントの内部処理時間の算出方法
エントリを先頭から読み込んでいく。そして、種類情報「ステートメント開始」を有するエントリを読み込んだ後、このエントリと同一のスレッド名であり、種類情報「ブロック開始」を有するエントリが最初に読み込んだ時点で、両者のエントリに含まれる実行時間の差を、該ステートメントの内部処理時間として求める。
具体的には、上記実施の形態では、プログラムプロファイリング装置のプログラムが、メモリ等に予め記憶されているものとして説明した。しかし、上述の処理動作を実行させるためのプログラムを、フレキシブルディスク、CD−ROM(Compact Disk Read-Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto-Optical disk)等のコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムをコンピュータにインストールすることにより、上述の処理を実行するプログラムプロファイリング装置を構成してもよい。
また、上述の機能を、OS(Operating System)が分担又はOSとアプリケーションの協働により実現する場合等には、OS以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロード等してもよい。
141 プローブ挿入対象メソッド記憶部
142 プローブ挿入対象ステートメント記憶部
143 ステートメント構文情報記憶部
144 ステートメント詳細性能ログ記憶部
21 プローブ挿入部
22 目的プログラム生成部
23 プログラム実行部
24 計測部
25 ステートメント情報集計部
26 ステートメント情報表示部
Claims (7)
- 1つ又は複数のメソッドを含むソースプログラムを解析して、メソッドに含まれるステートメントを特定する、ステートメント特定手段と、
前記ステートメント特定手段によって特定されたステートメントの処理の前後に、処理時間を計測するためのプローブを挿入するプローブ挿入手段と、
前記プローブ挿入手段によってプローブが挿入されたソースプログラムをコンパイルして作成された目的プログラムの実行により前記プローブが挿入されたステートメントの処理が開始又は終了する毎に、該ステートメントの処理が開始か終了かを表す情報とそのときの時刻と該ステートメントの処理が属するスレッドの識別情報とを対応付けて記憶するステートメント情報記憶手段と、
前記ステートメント情報記憶手段に記憶されている情報に基づいて、ステートメントの処理時間を算出するステートメント処理時間算出手段と、
前記ステートメント処理時間算出手段で算出したステートメントの処理時間を表示する処理時間表示手段と、
を備えることを特徴とする、プログラムプロファイリング装置。 - 前記ソースプログラムを構成するメソッドのうち、前記プローブの挿入対象とするメソッドの識別情報を記憶するプローブ挿入対象メソッド記憶手段をさらに備え、
前記プローブ挿入手段は、前記プローブ挿入対象メソッド記憶手段に識別情報が記憶されているメソッドに含まれる前記ステートメント特定手段で特定したステートメントの処理の前後に、処理時間を計測するためのプローブを挿入する、
ことを特徴とする、請求項1に記載のプログラムプロファイリング装置。 - ステートメントのカテゴリ毎に、該カテゴリに属するステートメントを前記プローブの挿入対象とするか否かを示す管理情報を記憶するプローブ挿入対象ステートメント記憶手段をさらに備え、
前記プローブ挿入手段は、前記ステートメント特定手段で特定したステートメントであって、そのカテゴリに属するステートメントを前記プローブの挿入対象とすることを示す管理情報が前記プローブ挿入対象ステートメント記憶手段に記憶されているステートメントの処理の前後に、処理時間を計測するためのプローブを挿入する、
ことを特徴とする、請求項1又は2に記載のプログラムプロファイリング装置。 - 前記プローブ挿入手段で処理の前後にプローブを挿入するステートメントがブロックを有している場合、該ブロックの処理の前に、該ブロックの処理時間を計測するためのブロック用プローブを挿入する、ブロック用プローブ挿入手段と、
前記プローブ挿入手段と前記ブロック用プローブ挿入手段とによってプローブとブロック用プローブとが挿入されたソースプログラムをコンパイルして作成された目的プログラムの実行により前記ブロック用プローブを挿入したブロックの処理が開始する度に、該ブロックの開始を表す情報とそのときの時刻と該ブロックの処理が属するスレッドの識別情報とを対応付けて記憶するブロック情報記憶手段と、
前記ステートメント情報記憶手段と前記ブロック情報記憶手段とに記憶されている情報に基づいて、ブロックの処理時間を算出するブロック処理時間算出手段と、をさらに備え、
前記処理時間表示手段は、前記ブロック処理時間算出手段で算出したブロックの処理時間を表示する、
ことを特徴とする、請求項1乃至3の何れか1項に記載のプログラムプロファイリング装置。 - 前記ステートメント情報記憶手段と前記ブロック情報記憶手段に記憶されている情報とに基づいて、前記ブロックを有するステートメントの処理時間から該ブロックの処理時間を除いた処理時間を該ステートメントの内部処理時間として算出する、内部処理時間算出手段をさらに備え、
前記処理時間表示手段は、前記内部処理時間算出手段で算出したステートメントの内部処理時間を表示する、
ことを特徴とする、請求項4に記載のプログラムプロファイリング装置。 - 複数のメソッドから構成されたソースプログラムを解析して、メソッドに含まれるステートメントを特定する、ステートメント特定ステップと、
前記ステートメント特定ステップで特定したステートメントの処理の前後に、処理時間を計測するためのプローブを挿入するプローブ挿入ステップと、
前記プローブ挿入ステップによってプローブが挿入されたソースプログラムをコンパイルして作成された目的プログラムを実行した際の、前記プローブ挿入ステップでプローブを挿入したステートメントの処理が開始又は終了する毎に、該ステートメントの処理が開始か終了かを表す情報とそのときの時刻と該ステートメントの処理が属するスレッドの識別情報とを対応付けて記憶するステートメント情報記憶ステップと、
前記ステートメント情報記憶ステップに記憶されている情報に基づいて、ステートメントの処理時間を算出するステートメント処理時間算出ステップと、
前記ステートメント処理時間算出ステップで算出したステートメントの処理時間を表示する処理時間表示ステップと、
を備えることを特徴とするプログラムプロファイリング方法。 - コンピュータを、
複数のメソッドから構成されたソースプログラムを解析して、メソッドに含まれるステートメントを特定する、ステートメント特定手段と、
前記ステートメント特定手段で特定したステートメントの処理の前後に、処理時間を計測するためのプローブを挿入するプローブ挿入手段と、
前記プローブ挿入手段によってプローブが挿入されたソースプログラムをコンパイルして作成された目的プログラムを実行した際の、前記プローブ挿入手段でプローブを挿入したステートメントの処理が開始又は終了する毎に、該ステートメントの処理が開始か終了かを表す情報とそのときの時刻と該ステートメントの処理が属するスレッドの識別情報とを対応付けて記憶するステートメント情報記憶手段と、
前記ステートメント情報記憶手段に記憶されている情報に基づいて、ステートメントの処理時間を算出するステートメント処理時間算出手段と、
前記ステートメント処理時間算出手段で算出したステートメントの処理時間を表示する処理時間表示手段と、
して機能させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007179079A JP4860564B2 (ja) | 2007-07-06 | 2007-07-06 | プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007179079A JP4860564B2 (ja) | 2007-07-06 | 2007-07-06 | プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009015734A true JP2009015734A (ja) | 2009-01-22 |
JP4860564B2 JP4860564B2 (ja) | 2012-01-25 |
Family
ID=40356543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007179079A Expired - Fee Related JP4860564B2 (ja) | 2007-07-06 | 2007-07-06 | プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4860564B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102009010854A1 (de) | 2008-02-27 | 2009-10-22 | Hoya Corp. | Fotomaskenrohling, Fotomaske und Verfahren zu ihrer Herstellung |
JP2016143146A (ja) * | 2015-01-30 | 2016-08-08 | 日本電信電話株式会社 | オートリソースロギングシステム、オートリソースロギング方法及びプログラム |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002259167A (ja) * | 2000-12-26 | 2002-09-13 | Fujitsu Ltd | 実行性能情報の提示方法、及び記録媒体 |
JP2003140928A (ja) * | 2001-11-02 | 2003-05-16 | Fujitsu Ltd | 仮想マシン内部情報自動取得システム |
JP2004287869A (ja) * | 2003-03-24 | 2004-10-14 | Hitachi Ltd | プログラム実行監視装置および方法 |
JP2005352894A (ja) * | 2004-06-11 | 2005-12-22 | Nec Corp | 性能解析プログラム及び性能解析プログラムの生成方法 |
-
2007
- 2007-07-06 JP JP2007179079A patent/JP4860564B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002259167A (ja) * | 2000-12-26 | 2002-09-13 | Fujitsu Ltd | 実行性能情報の提示方法、及び記録媒体 |
JP2003140928A (ja) * | 2001-11-02 | 2003-05-16 | Fujitsu Ltd | 仮想マシン内部情報自動取得システム |
JP2004287869A (ja) * | 2003-03-24 | 2004-10-14 | Hitachi Ltd | プログラム実行監視装置および方法 |
JP2005352894A (ja) * | 2004-06-11 | 2005-12-22 | Nec Corp | 性能解析プログラム及び性能解析プログラムの生成方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102009010854A1 (de) | 2008-02-27 | 2009-10-22 | Hoya Corp. | Fotomaskenrohling, Fotomaske und Verfahren zu ihrer Herstellung |
JP2016143146A (ja) * | 2015-01-30 | 2016-08-08 | 日本電信電話株式会社 | オートリソースロギングシステム、オートリソースロギング方法及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP4860564B2 (ja) | 2012-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5987250A (en) | Transparent instrumentation for computer program behavior analysis | |
US8381194B2 (en) | Methods and apparatuses for selective code coverage | |
US20130080993A1 (en) | Embedded system performance | |
JP2015043198A (ja) | 解析システム、解析方法および解析プログラム | |
JP2003050715A (ja) | コンパイラおよびデバッグ装置 | |
KR20110070468A (ko) | 인스트루먼테이션 실행 장치 및 방법 | |
JP4905974B2 (ja) | プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム | |
JP5029245B2 (ja) | プロファイリング方法及びプログラム | |
US9134979B2 (en) | Convergence analysis in multithreaded programs | |
JP2018156133A (ja) | コンパイラプログラム、情報処理装置およびコンパイル方法 | |
US20120331448A1 (en) | Coverage measurement apparatus and method and medium | |
US20050216897A1 (en) | Converter, automation device with a converter, and a development environment having an automation device with converter | |
JP4860564B2 (ja) | プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム | |
JP2007018254A (ja) | 言語処理装置 | |
JP2009237610A (ja) | コード変換装置及びコード変換方法 | |
JP2008276735A (ja) | プログラムコード変換装置及びプログラムコード変換方法 | |
US8756580B2 (en) | Instance-based field affinity optimization | |
JP2009064124A (ja) | 性能データ収集・表示システム、性能データ表示装置、そのプログラム | |
JP2005339204A (ja) | 情報処理装置およびプログラムのテスト方法 | |
JPWO2017204139A1 (ja) | データ処理装置、データ処理方法、およびプログラム記録媒体 | |
JP2008250838A (ja) | ソフトウェア生成装置、方法、およびプログラム | |
US20100077384A1 (en) | Parallel processing of an expression | |
JP2016057798A (ja) | プログラム埋め込み装置 | |
JP2012018641A (ja) | ソフトウェア開発システム | |
JP2006202134A (ja) | プロファイル情報収集方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100324 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110630 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110712 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110909 |
|
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: 20111004 |
|
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: 20111102 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4860564 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20141111 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |