JP3961787B2 - Object-oriented program performance improvement support device, recording medium, and program - Google Patents

Object-oriented program performance improvement support device, recording medium, and program Download PDF

Info

Publication number
JP3961787B2
JP3961787B2 JP2001168933A JP2001168933A JP3961787B2 JP 3961787 B2 JP3961787 B2 JP 3961787B2 JP 2001168933 A JP2001168933 A JP 2001168933A JP 2001168933 A JP2001168933 A JP 2001168933A JP 3961787 B2 JP3961787 B2 JP 3961787B2
Authority
JP
Japan
Prior art keywords
performance
unit
execution environment
information
source code
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
JP2001168933A
Other languages
Japanese (ja)
Other versions
JP2002073369A (en
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
Priority to JP2001168933A priority Critical patent/JP3961787B2/en
Publication of JP2002073369A publication Critical patent/JP2002073369A/en
Application granted granted Critical
Publication of JP3961787B2 publication Critical patent/JP3961787B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、オブジェクト指向プログラムの実行性能改善支援を行うオブジェクト指向プログラム性能改善支援装置及び記録媒体に関する。
【0002】
【従来の技術】
従来、オブジェクト指向設計を行う場合、性能評価(メモリ使用量やインスタンス数の評価)には、プロファイラと呼ばれる技術が用いられていた。このプロファイラは、プログラムを実際に実行しながら、生成されるインスタンス数やそのメモリ使用量を測定するものである。
【0003】
この場合、プロファイラを使用するには、コンパイルして実行可能なソースコード(実行可能なプログラム)が必要である。すなわち、一般に、設計情報が与えられると、該設計情報からソースコードを生成し、このソースコードをコンパイルして実行可能なソースコード(実行可能なプログラム)を作成する。
【0004】
そして、プロファイラは、実行可能なソースコードを実際に実行しながら、生成されるインスタンス数やメモリ使用量を測定し、その結果の情報から性能評価を行っていた。
【0005】
【発明が解決しようとする課題】
前記のような従来のものにおいては、次のような課題があった。
【0006】
従来のプロファイラと呼ばれる技術では、コンパイル、リンクが行なえる段階までプログラムを完成しておく必要がある。つまり、開発がほぼ終了する段階まで性能のボトルネックを検出できない。また、性能のボトルネックとなっている部分は明確になっても、どのような改善を行なえば良いかは明らかにならない。
【0007】
本発明は、このような従来の課題を解決し、オブジェクト指向プログラムのソースコードを静的に解析し、実行性能を劣化させる可能性のある部分を検出し、その部分に対する改善案を提示して、プログラムの性能改善を支援できるようにすることを目的とする。
【0008】
【課題を解決するための手段】
図1は本発明の原理説明図である。図1において、性能劣化解析部は、性能劣化箇所解析部7と、性能劣化箇所表示処理部9と、反復・集中箇所検出部10を備え、性能予測部には、性能予測式導出部12と、結果計算部16と、性能予測結果表示処理部18を備え、共通部には、解析制御部2と、改善情報表示処理部5を備えている。本発明は前記の目的を達成するため、次のように構成した。
【0009】
(1) :オブジェクト指向プログラム性能改善支援装置において、オブジェクト指向プログラムの実行性能を劣化させる可能性のあるクラス名、処理名、処理パターンを実行環境毎に性能劣化情報として予め蓄積し、これを実行環境別性能劣化情報として用いることで、オブジェクト指向プログラムのソースコードを静的に解析し、ソースコード中で実行性能を劣化させる可能性のある箇所を表示する処理手段(性能劣化箇所解析部7、性能劣化箇所表示処理部9を含む手段)を備えている。
【0010】
(2) :前記(1) のオブジェクト指向プログラム性能改善支援装置において、ソースコード中の性能を劣化させる可能性のある箇所に対して、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報を用いて、プログラミングの改善方法を表示する処理手段(改善情報表示処理部5を含む手段)を備えている。
【0011】
(3) :前記(1) のオブジェクト指向プログラム性能改善支援装置において、解析対象ソースコードを静的に解析して、ループ、再帰呼出し、多くの箇所で使われるメソッドなど、実行回数が多くなる箇所を特定する反復・集中箇所検出手段(反復・集中箇所検出部10を含む手段)を備え、実行環境別性能劣化情報の項目毎に、実行回数が多くなる箇所のみ解析の対象とするか、或いはソースコードの全範囲を解析の対象にするかを切り替え可能とする。
【0012】
(4) :前記(1) のオブジェクト指向プログラム性能改善支援装置において、実行環境別性能劣化情報の項目毎に、実行性能に対する影響の度合いをランク付けする情報の登録と修正を可能とし、ソースコード中で実行性能を劣化させる可能性のある箇所を、実行性能に対する影響の大きさで順序付けて表示する処理手段(性能劣化箇所表示処理部9を含む手段)を備えている。
【0013】
(5) :オブジェクト指向プログラムのソースコードを静的に解析し、指定された処理中でメモリを確保している箇所が何箇所あるか、クラス又はタイプ毎に特定の実行環境における数の性能予測計算式を導出し、合わせて実行環境別性能実測情報に予め登録してあるクラス又はタイプ毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する第1の処理手段(性能予測式導出部12の一部を含む手段)と、
入力値によって指示があった場合は、導出した性能予測計算式を実行環境別性能予測情報に登録する第2の処理手段(性能予測式導出部12の一部を含む手段)と、性能予測計算式の変数部分は、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする第3の処理手段(性能予測結果表示処理部18を含む手段)と、ユーザが入力した値を性能予測計算式に代入して性能予測値を得る第4の処理手段(結果計算部16を含む手段)とを備えている。
【0014】
(6) :オブジェクト指向プログラム性能改善支援装置において、予め登録してある実行環境別性能実測情報を用いて、オブジェクト指向プログラムのソースコードを静的に解析し、指定された処理の、特定の実行環境における処理時間のオーバヘッドの性能予測計算式を導出する第1の処理手段(性能予測式導出部12の一部を含む手段)と、入力値によって指示があった場合は、導出した性能予測計算式を実行環境別性能予測情報に登録する第2の処理手段(性能予測式導出部12の一部を含む手段)と、性能予測計算式の変換部分は、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする第3の処理手段(性能予測結果表示処理部18を含む手段)と、ユーザが入力した値を性能予測計算式に代入して性能予測値を得る第4の処理手段(結果計算部16を含む手段)とを備えている。
【0015】
(7) :前記(5) のオブジェクト指向プログラム性能改善支援装置において、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報を用いて、確保されるメモリ量を減らすためのプログラミングの改善方法を表示する処理手段(改善情報表示処理部5を含む手段)を備えている。
【0016】
(8) :前記(6) のオブジェクト指向プログラム性能改善支援装置において、ソースコード中で処理時間のオーバヘッドを発生させている箇所に対して、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報を用いて、プログラムの改善方法を表示する処理手段(改善情報表示処理部5を含む手段)を備えている。
【0017】
以上をまとめると、本発明の構成は次の通りである。
(a) :オブジェクト指向プログラムのソースコードを解析し、性能劣化の可能性のある箇所を検出する性能劣化解析部と、
性能の予測を行う性能予測部と、
前記性能劣化解析部及び性能予測部に共通の共通部とを有し、
前記性能劣化解析部には、
オブジェクト指向プログラムの実行性能を劣化させる可能性のある箇所を、予め実行環境毎に性能劣化情報として蓄積した実行環境別性能劣化情報記憶手段と、性能劣化箇所の解析処理を行う性能劣化箇所解析部と、性能劣化箇所の検出情報をディスプレイ装置の画面に表示する性能劣化箇所表示処理部とを少なくとも備え、
前記共通部には、解析対象のオブジェクト指向プログラムのソースコードを記憶したソースコード記憶手段と、外部からの入力値を基に、前記性能劣化箇所解析部に対して解析制御を行う解析制御手段を少なくとも備えたオブジェクト指向プログラム性能改善支援装置であって、
前記性能劣化箇所解析部は、前記解析制御手段の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析して、前記実行環境別性能劣化情報記憶手段の性能劣化情報が含まれる箇所を、実行性能を劣化させる可能性のある箇所として検出する機能を有し、
前記性能劣化箇所表示処理部は、前記性能劣化箇所解析部が検出した結果の情報をディスプレイ装置の画面に表示する機能を有すると共に、
前記性能予測部には、
実行環境別性能実測情報を予め登録しておく実行環境別性能実測情報登録手段と、実行環境別性能予測情報を予め登録しておく実行環境別性能予測情報登録手段と、性能予測式の導出処理を行う性能予測式導出部と、結果計算部と、性能予測結果の情報をディスプレイ装置の画面に表示する処理を行う性能予測結果表示処理部とを少なくとも備え、
前記性能予測式導出部は、前記解析制御部の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析し、指定された処理中で、或るメソッドが呼ばれた際に生成されるクラスのインスタンス又は配列の数の性能予測式を導出し、併せて、前記実行環境別性能実測情報登録手段に予め登録されているクラス毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する機能を有すると共に、
外部からの入力値によって指示があった場合、前記導出された性能予測式を、前記実行環境別性能予測情報登録手段に登録する機能を有し、
前記結果計算部は、ユーザが入力した値を前記性能予測計算式に代入して性能予測値を得る機能を有し、
前記性能予測結果表示処理部は、前記性能予測計算式の変数部分に対応する前記ソースコードの箇所をディスプレイ装置の画面に表示する機能を有し、
前記結果計算部は、前記表示された情報を基にユーザが入力した値を、前記性能予測式導出部が導出した性能予測式に代入して性能予測値を得る機能を有することを特徴とする。
【0018】
(作用)
前記構成に基づく本発明の作用を説明する。
【0019】
(a) :前記(1) では、前記処理手段は、オブジェクト指向プログラムの実行性能を劣化させる可能性のあるクラス名、処理名、処理パターンを実行環境毎に性能劣化情報として予め蓄積し、これを実行環境別性能劣化情報として用いることで、オブジェクト指向プログラムのソースコードを静的に解析し、ソースコード中で実行性能を劣化させる可能性のある箇所を表示する。
【0020】
この場合、従来技術では、ソースコード全体が完成した実行可能な形になっていないと実行性能劣化部分の検出が行なえなかった。それに対して、本発明の装置では、一部分だけ出来ているソースコードを解析して、実行性能を劣化させる可能性のある箇所を検出できる。従って、従来技術よりも開発の早い段階で実行性能に関する問題を発見できる。
【0021】
また、実行環境別性能劣化情報を性能劣化箇所解析部7に作り込まず、外部から追加、修正が可能なデータとして蓄積している。従って、例えば、ユーザが自分のプロジェクトに合わせて実行環境別性能劣化情報の追加、修正を行なえるため、ユーザの実行環境や設計方針に合った解析が可能になる。
【0022】
(b) :前記(2) では、前記処理手段は、ソースコード中の性能を劣化させる可能性のある箇所に対して、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報を用いて、プログラミングの改善方法を表示する。
【0023】
この場合、従来技術では、性能劣化部分を指摘するだけに留まっているのに対し、本発明の装置では、実行性能を劣化させる可能性のある箇所に対して、対処法を提示することができる。また、実行環境別性能改善情報を改善情報表示処理部5に作り込まず、外部から追加、修正が可能なデータとして蓄積している。
【0024】
このため、ユーザが自分のプロジェクトに合わせて実行環境別性能改善情報の追加、修正を行なえるため、ユーザの実行環境や設計方針に合った対処法の提示が可能になる。
【0025】
(c) :前記(3) では、反復・集中箇所検出手段は、解析対象ソースコードを静的に解析して、ループ、再帰呼出し、多くの箇所で使われるメソッドなど、実行回数が多くなる箇所を特定する。これにより、実行環境別性能劣化情報の項目毎に、実行回数が多くなる箇所のみ解析の対象とするか、或いはソースコードの全範囲を解析の対象にするかを切り替え可能とする。
【0026】
ところで、実行性能を劣化させる可能性のあるクラス名、処理名、処理パターン、すなわち、実行環境別性能劣化情報の各項目には、大別して、1回現れるだけでも問題になるものと、繰返し現れると問題になる(言い換えれば、1回だけなら問題にならない)ものの2種類がある。
【0027】
本発明の装置では、1回現れるだけでも問題になる項目は解析対象ソースコード全体を対象に検出し、繰返し現れると問題になる項目は反復・集中箇所検出結果を対象に検出する。こうすることで、1回だけなら問題にならない項目に関して、反復・集中処理しない部分に現れていることまで指摘するような、過剰な検出を防ぐことができる。
【0028】
更に、1回現れるだけでも問題になるものと繰返し現れると問題になるものの間の境界は、ユーザの設計方針や対象システムの性質によって異なる場合が多い。また、何回以上を「実行回数が多い」とするのが適切かということも、ユーザによって異なる。
【0029】
本発明の装置では、ユーザが実行環境別性能劣化情報の各項目を修正して、実行回数が多くなる箇所のみ解析の対象にするか、ソースコードの全範囲を解析の対象にするかを柔軟に切り替えることができる。また、何回以上を反復・集中として検出するかもユーザが指定できる。これによってユーザは、自分のプロジェクトに最適な解析ができる。
【0030】
(d) :前記(4) では、前記処理手段は、実行環境別性能劣化情報の項目毎に、実行性能に対する影響の度合いをランク付けする情報の登録と修正を可能とし、ソースコード中で実行性能を劣化させる可能性のある箇所を、実行性能に対する影響の大きさで順序付けて表示する。
【0031】
実行性能を劣化させる可能性のあるクラス名、処理名、処理パターン、すなわち、実行環境別性能劣化情報の各項目には、実行性能に対する影響が大きなものと小さなものとがある。問題を解決する際には、実行性能に対する影響が大きなものから順に行うのが望ましい。
【0032】
本発明の装置では、実行環境別性能劣化情報の項目毎に、実行性能に対する影響の度合いをランク付けする情報を登録することで、性能劣化箇所解析結果(性能劣化箇所解析部7の出力)を実行性能に対する影響の大きなものから順に表示することを可能にする。
【0033】
また、実行性能に対する影響の大小は、ユーザが構築するシステムの性質や実行環境によって異なることが多いが、実行環境別性能劣化情報を修正することで、ユーザに最適な解析結果を得られるようにすることができる。
【0034】
(e) :前記(5) では、第1の処理手段は、オブジェクト指向プログラムのソースコードを静的に解析し、指定された処理中でメモリを確保している箇所が何箇所あるか、クラス又はタイプ毎に特定の実行環境における数の性能予測計算式を導出し、合わせて実行環境別性能実測情報に予め登録してあるクラス又はタイプ毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する。
【0035】
第2の処理手段は、入力値によって指示があった場合は、導出した性能予測計算式を実行環境別性能予測情報に登録する。第3の処理手段は、性能予測計算式の変数部分は、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする。第4の処理手段は、ユーザが入力した値を性能予測計算式に代入して性能予測値を得る。
【0036】
オブジェクト指向プログラムでは、オブジェクト(クラスのインスタンス)や配列がメモリを圧迫することで性能問題が起こることが多い。しかし、従来技術は、ソースコード全体が完成し実行可能な形になってから生成されるオブジェクトや配列の数とメモリ使用量を実測するだけで、事前の予測が行えなかった。
【0037】
本発明の装置では、ソースコードを解析して、或るメソッドが呼ばれた際に生成されるクラスのインスタンスや配列の数の予測式を作る。また、メモリ使用量は、各クラスのインスタンスや配列について実行環境毎に予め実測した情報(実行環境別性能実測情報)を用いて、予測式を作る。ソースコードを解析するだけでは分からない部分は式の変数とし、ユーザと対話しながら解決することができる。
【0038】
また、各処理(メソッドやコンストラクタ)毎に作成した予測式を実行環境別性能予測情報に登録して再利用できるので、同じ処理について予測式を再計算せずに済み、性能予測式導出部12の処理を効率化できる。
【0039】
(f) :前記(6) では、第1の処理手段は、予め登録してある実行環境別性能実測情報を用いて、オブジェクト指向プログラムのソースコードを静的に解析し、指定された処理の、特定の実行環境における処理時間のオーバヘッドの性能予測計算式を導出する。第2の処理手段は、入力値によって指示があった場合は、導出した性能予測計算式を実行環境別性能予測情報に登録する。
【0040】
第3の処理手段は、性能予測計算式の変換部分は、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする。第4の処理手段は、ユーザが入力した値を性能予測計算式に代入して性能予測値を得る。
【0041】
この場合、従来技術では、ソースコード全体が完成し、実行可能な形になってからメソッドの実行にかかる時間を実測するだけで、事前の予測は行えなかった。本発明の装置では、ソースコードを解析して、処理(メソッドやコンストラクタ)毎に処理時間のオーバーヘッドの予測式を作る。
【0042】
式の作成には、基本的な処理のオーバーヘッドについて実行環境毎に予め実測した情報(実行環境別性能実測情報)を用いる。このようにして、ソースコードを解析するだけでは分からない部分は式の変数とし、ユーザと対話しながら解決することができる。
【0043】
(g) :前記(7) では、前記処理手段は、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報を用いて、確保されるメモリ量を減らすためのプログラミングの改善方法を表示する。
【0044】
この場合、従来技術では、性能劣化部分を指摘するだけに留まっているのに対し、本発明の装置では、実行性能を劣化させる可能性のある箇所に対して、対処法を提示することができる。また、実行環境別性能改善情報を改善情報表示処理部5に作り込まず、外部から追加、修正が可能なデータとして蓄積している。
【0045】
従って、ユーザが自分のプロジェクトに合わせて実行環境別性能改善情報4の追加、修正が行なえるため、ユーザの実行環境や設計方針に合った対処法の提示が可能になる。
【0046】
(h) :前記(8) では、前記処理手段は、ソースコード中で処理時間のオーバヘッドを発生させている箇所に対して、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報を用いて、プログラムの改善方法を表示する。
【0047】
この場合、従来技術では、性能劣化部分を指摘するだけに留まっているのに対し、本発明の装置では、実行性能を劣化させる可能性のある箇所に対して、対処法を提示することができる。また、実行環境別性能改善情報を改善情報表示処理部5に作り込まず、外部から追加、修正が可能なデータとして蓄積している。
【0048】
このようにすれば、ユーザが自分のプロジェクトに合わせて実行環境別性能改善情報4の追加、修正が行なえるため、ユーザの実行環境や設計方針に合った対処法の提示が可能になる。
【0049】
(i) :前記(9) では、コンピュータが記録媒体のプログラムを読み出して実行することにより、又は、前記プログラムを実行することにより、前記オブジェクト指向プログラムの実行性能を劣化させる可能性のあるクラス名、処理名、処理パターンを実行環境毎に性能劣化情報として予め蓄積する手順と、これを実行環境別性能劣化情報として用いることで、オブジェクト指向プログラムのソースコードを静的に解析し、ソースコード中で実行性能を劣化させる可能性のある箇所を表示する手順を実行する。
【0050】
この場合、従来技術では、ソースコード全体が完成した実行可能な形になっていないと実行性能劣化部分の検出が行なえなかった。それに対して、本発明の装置では、一部分だけ出来ているソースコードを解析して、実行性能を劣化させる可能性のある箇所を検出できる。従って、従来技術よりも開発の早い段階で実行性能に関する問題を発見できる。
【0051】
また、実行環境別性能劣化情報を性能劣化箇所解析部7に作り込まず、外部から追加、修正が可能なデータとして蓄積している。従って、例えば、ユーザが自分のプロジェクトに合わせて実行環境別性能劣化情報の追加、修正を行なえるため、ユーザの実行環境や設計方針に合った解析が可能になる。
【0052】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【0053】
§1:装置の説明
図2は装置の説明図(その1)、図3は装置の説明図(その2)、図4は装置の説明図(その3)である。以下、図2〜図4に基づいて、オブジェクト指向プログラム性能改善支援装置を説明する。
【0054】
図2に示すように、オブジェクト指向プログラム性能改善支援装置は、大別すると、共通部Aと、性能劣化解析処理を行う性能劣化解析部Bと、性能予測処理を行う性能予測部Cから構成されている。
【0055】
図3に示すように、共通部Aは、解析時の制御を行う解析制御部2と、改善情報の表示処理を行う改善情報表示処理部5を備えている。そして、共通部Aの情報等には、解析対象ソースコード1と、入力値3と、実行環境別性能改善情報4がある。
【0056】
性能劣化解析部Bは、性能劣化箇所の解析処理を行う性能劣化箇所解析部7と、性能劣化箇所をディスプレイ装置の画面に表示する性能劣化箇所表示処理部9と、反復・集中箇所を検出する反復・集中箇所検出部10を備えている。そして、性能劣化解析部Bの情報等には、実行環境別性能劣化情報6と、性能劣化箇所検出結果8と、反復・集中箇所検出結果11がある。
【0057】
図4に示すように、性能予測部Cは、性能予測式の導出処理を行う性能予測式導出部12と、結果計算処理を行う結果計算部16と、性能予測結果表示処理部18を備えている。そして、性能予測部Cの情報等には、実行環境別性能実測情報13と、実行環境別性能予測情報14と、性能予測計算式15と、性能予測値17がある。
【0058】
前記構成のオブジェクト指向プログラム性能改善支援装置の処理の特徴は次の通りである。
【0059】
(1) :オブジェクト指向プログラムの実行性能を劣化させる可能性のあるクラス名、処理名、処理パターンを実行環境毎に性能劣化情報として予め蓄積し(以降、これを「実行環境別性能劣化情報6」と呼ぶ)、これを用いて性能劣化箇所解析部7がオブジェクト指向プログラムのソースコード(解析対象ソースコード1)を静的に解析し、ソースコード中で実行性能を劣化させる可能性のある箇所(性能劣化箇所検出結果8)を性能劣化箇所表示処理部9がディスプレイ装置の表示画面に表示する。
【0060】
この場合、従来技術では、ソースコード全体が、完成した実行可能な形になっていないと実行性能劣化部分の検出が行なえなかった。それに対して、本発明の装置では、一部分だけ出来ているソースコードを解析して、実行性能を劣化させる可能性のある箇所を検出できる。従って、従来技術よりも開発の早い段階で実行性能に関する問題を発見できる。
【0061】
また、実行環境別性能劣化情報6を性能劣化箇所解析部7に作り込まず、外部から追加、修正が可能なデータとして蓄積していることも特徴である。例えば、ユーザが自分のプロジェクトに合わせて実行環境別性能劣化情報6の追加、修正を行なえるため、ユーザの実行環境や設計方針に合った解析が可能になる。
【0062】
(2) :前記(1) のオブジェクト指向プログラム性能改善支援装置において、ソースコード中の性能を劣化させる可能性のある箇所(性能劣化箇所検出結果8)に対して、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報4を用いて、改善情報表示処理部5が、ディスプレイ装置の表示画面にプログラミングの改善方法を表示する。
【0063】
この場合、従来技術では、性能劣化部分を指摘するだけに留まっているのに対し、本発明の装置では、実行性能を劣化させる可能性のある箇所に対して、対処法を提示することができる。また、実行環境別性能改善情報4を改善情報表示処理部5に作り込まず、外部から追加、修正が可能なデータとして蓄積している。このため、ユーザが自分のプロジェクトに合わせて実行環境別性能改善情報4の追加、修正を行なえるため、ユーザの実行環境や設計方針に合った対処法の提示が可能になる。
【0064】
(3) :前記(1) のオブジェクト指向プログラム性能改善支援装置において、解析対象ソースコード1を静的に解析して、ループ、再帰呼出し、多くの箇所で使われるメソッドなど、実行回数が多くなる箇所(反復・集中箇所検出結果11)を特定する反復・集中箇所検出部10を有し、実行環境別性能劣化情報6の項目毎に、実行回数が多くなる箇所(反復・集中箇所検出結果11)のみ解析の対象とするか、或いはソースコードの全範囲(解析対象ソースコード1)を解析の対象にするかを切り替え可能とする。
【0065】
実行性能を劣化させる可能性のあるクラス名、処理名、処理パターン(すなわち、実行環境別性能劣化情報6の各項目)には、大別して、1回現れるだけでも問題になるものと、繰返し現れると問題になる(言い換えれば、1回だけなら問題にならない)ものの2種類がある。本発明の装置では、1回現れるだけでも問題になる項目は解析対象ソースコード1全体を対象に検出し、繰返し現れると問題になる項目は反復・集中箇所検出結果11(反復・集中箇所検出部10の出力)を対象に検出する。
【0066】
こうすることで、1回だけなら問題にならない項目に関して、反復・集中処理しない部分に現れていることまで指摘するような、過剰な検出を防ぐことができる。
【0067】
更に、1回現れるだけでも問題になるものと繰返し現れると問題になるものの間の境界は、ユーザの設計方針や対象システムの性質によって異なる場合が多い。また、何回以上を「実行回数が多い」とするのが適切かということも、ユーザによって異なる。本発明の装置では、ユーザが実行環境別性能劣化情報6の各項目を修正して、実行回数が多くなる箇所のみ解析の対象にするか、ソースコードの全範囲を解析の対象にするかを柔軟に切り替えることができる。また、何回以上を反復・集中として検出するかもユーザが指定できる。これによってユーザは、自分のプロジェクトに最適な解析ができる。
【0068】
(4) :前記(1) のオブジェクト指向プログラム性能改善支援装置において、実行環境別性能劣化情報6の項目毎に、実行性能に対する影響の度合いをランク付けする情報の登録と修正を可能とし、ソースコード中で実行性能を劣化させる可能性のある箇所(性能劣化箇所検出結果8)を、性能劣化箇所表示処理部9が、実行性能に対する影響の大きさで順序付けて、ディスプレイ装置の表示画面に表示する。
【0069】
実行性能を劣化させる可能性のあるクラス名、処理名、処理パターン(すなわち、実行環境別性能劣化情報6の各項目)には、実行性能に対する影響が大きなものと小さなものとがある。問題を解決する際には、実行性能に対する影響が大きなものから順に行うのが望ましい。
【0070】
本発明の装置では、実行環境別性能劣化情報6の項目毎に、実行性能に対する影響の度合いをランク付けする情報を登録することで、性能劣化箇所検出結果8(性能劣化箇所解析部7の出力)を実行性能に対する影響の大きなものから順に表示することを可能にする。また、実行性能に対する影響の大小は、ユーザが構築するシステムの性質や実行環境によって異なることが多いが、実行環境別性能劣化情報6を修正することで、ユーザに最適な解析結果を得られるようにすることができる。
【0071】
(5) :オブジェクト指向プログラムのソースコード(解析対象ソースコード1)を静的に解析し、指定された処理中でメモリを確保している箇所が何箇所あるか、クラス又はタイプ毎に特定の実行環境における数の性能予測計算式15を導出する。また、合わせて実行環境別性能実測情報13に予め登録してあるクラス又はタイプ毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式15を導出する。
【0072】
入力値3によって指示があった場合は、導出した性能予測計算式15を実行環境別性能予測情報14に登録する。性能予測計算式15の変数部分は、性能予測結果表示処理部18が、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする。ユーザが入力した値を結果計算部16が性能予測計算式15に代入して性能予測値17を得る。
【0073】
この場合、オブジェクト指向プログラムでは、オブジェクト(クラスのインスタンス)や配列がメモリを圧迫することで性能問題が起こることが多い。しかし、従来技術は、ソースコード全体が完成し実行可能な形になってから生成されるオブジェクトや配列の数とメモリ使用量を実測するだけで、事前の予測が行えなかった。
【0074】
本発明の装置では、ソースコードを解析して、或るメソッドが呼ばれた際に生成されるクラスのインスタンスや配列の数の予測式を作る。また、メモリ使用量は、各クラスのインスタンスや配列について実行環境毎に予め実測した情報(実行環境別性能実測情報13)を用いて、予測式を作る。ソースコードを解析するだけでは分からない部分は式の変数とし、ユーザと対話しながら解決する。
【0075】
また、各処理(メソッドやコンストラクタ)毎に作成した予測式を実行環境別性能予測情報14に登録して再利用できるので、同じ処理について予測式を再計算せずに済み、性能予測式導出部12の処理を効率化できる。
【0076】
(6) :オブジェクト指向プログラム性能改善支援装置において、予め登録してある実行環境別性能実測情報13を用いてオブジェクト指向プログラムのソースコード(解析対象ソースコード1)を静的に解析し、指定された処理の「特定の実行環境における処理時間のオーバーヘッドの性能予測計算式15」を導出する。
【0077】
また、入力値3によって指示があった場合は、導出した性能予測計算式15を実行環境別性能予測情報14に登録する。そして、性能予測計算式15の変換部分は、対応するソースコードの箇所をディスプレイ装置の表示画面に表示し、ユーザが対話的に入力可能とする。ユーザが入力した値を結果計算部16が性能予測計算式15に代入して性能予測値17を得る。
【0078】
この場合、従来技術では、ソースコード全体が完成し、実行可能な形になってからメソッドの実行にかかる時間を実測するだけで、事前の予測は行えなかった。本発明の装置では、ソースコードを解析して、処理(メソッドやコンストラクタ)毎に処理時間のオーバーヘッドの予測式を作る。
【0079】
予測式の作成には、基本的な処理のオーバーヘッドについて実行環境毎に予め実測した情報(実行環境別性能実測情報13)を用いる。ソースコードを解析するだけでは分からない部分は式の変数とし、ユーザと対話しながら解決する。
【0080】
(7) :前記(5) のオブジェクト指向プログラム性能改善支援装置において、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報4を用いて、改善情報表示処理部5が、確保されるメモリ量を減らすためのプログラミングの改善方法を表示する。
【0081】
この場合、従来技術では、性能劣化部分を指摘するだけに留まっているのに対し、本発明の装置では、実行性能を劣化させる可能性のある箇所に対して対処法を提示することができる。また、実行環境別性能改善情報4を改善情報表示処理部5に作り込まず、外部から追加、修正が可能なデータとして蓄積している。
【0082】
このように、ユーザが自分のプロジェクトに合わせて実行環境別性能改善情報4の追加、修正が行なえるため、ユーザの実行環境や設計方針に合った対処法の提示が可能になる。
【0083】
(8) :前記(6) のオブジェクト指向プログラム性能改善支援装置において、ソースコード中で処理時間のオーバヘッドを発生させている箇所に対して、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報4を用いて、改善情報表示処理部5がプログラムの改善方法をディスプレイ装置の表示画面に表示する。
【0084】
この場合、従来技術では、性能劣化部分を指摘するだけに留まっているのに対し、本発明の装置では、実行性能を劣化させる可能性のある箇所に対して、対処法を提示することができる。
【0085】
また、実行環境別性能改善情報4を改善情報表示処理部5に作り込まず、外部から追加、修正が可能なデータとして蓄積している。このように、ユーザが自分のプロジェクトに合わせて実行環境別性能改善情報4の追加、修正が行なえるため、ユーザの実行環境や設計方針に合った対処法の提示が可能になる。
【0086】
§2:装置全体の処理の説明
図5は装置全体の処理フローチャート(その1)、図6は装置全体の処理フローチャート(その2)である。以下、図5、図6に基づいてオブジェクト指向プログラム性能改善支援装置全体の処理を説明する。なお、S−1〜S−13は各処理ステップを示す。
【0087】
S−1の処理では、解析制御部2は入力値3を読み込む。そして、S−2の処理では、解析制御部2は、入力値3に解析対象ソースコード1の全体の性能劣化箇所解析が指示されているかを調べ、性能劣化箇所解析が指示されていれば、S−3の処理へ移行し、性能劣化箇所解析が指示されていなければ、S−7の処理へ移行する。
【0088】
S−3の処理では、性能劣化箇所解析部7は、解析対象ソースコード1の全範囲を対象にした性能劣化箇所解析を行ない、性能劣化箇所検出結果8を出力する。そして、S−4の処理では、性能劣化箇所表示処理部9は、性能劣化箇所検出結果8を、実行性能に対する影響の大きさで順序付けて表示する。
【0089】
次に、S−5の処理では、解析制御部2は、入力値3に性能改善方法の表示が指示されているかを調べ、入力値3に性能改善方法の表示が指示されていれば、S−6の処理へ移行し、入力値3に性能改善方法の表示が指示されていなければこの処理を終了する。
【0090】
S−6の処理では、解析制御部2は改善情報表示処理部5を起動し、性能劣化箇所に対する改善情報の表示を指示する。改善情報表示処理部5は、性能劣化箇所検出結果8に対する実行環境別性能改善情報4を選んで表示し、処理を終了する。
【0091】
S7の処理では、解析制御部2は、入力値3に処理の反復・集中箇所の検出が指示されているかを調べ、入力値3に処理の反復・集中箇所の検出が指示されていればS−8の処理へ移行し、入力値3に処理の反復・集中箇所の検出が指示されていなければ、S−12の処理へ移行する。
【0092】
S−8の処理では、反復・集中箇所検出部10は、解析対象ソースコード1を解析して、反復・集中箇所検出結果11を出力する。S−9の処理では、性能劣化箇所表示処理部9は、反復・集中箇所検出結果11を表示する。S−10の処理では、解析制御部2は、入力値3に反復・集中箇所の性能劣化箇所解析が指示されているかを調べ、入力値3に反復・集中箇所の性能劣化箇所解析が指示されていれば、S−11の処理へ移行し、入力値3に反復・集中箇所の性能劣化箇所解析が指示されていなければ、この処理を終了する。
【0093】
S−11の処理では、性能劣化箇所解析部7は、反復・集中箇所検出結果11を対象にした性能劣化箇所解析を行ない、性能劣化箇所検出結果8を出力し、S−4の処理へ移行する。
【0094】
S12の処理では、解析制御部2は、入力値3に性能予測式の導出が指示されているかを調べ、入力値3に性能予測式の導出が指示されていれば、S−13の処理へ移行し、入力値3に性能予測式の導出が指示されていなければ、この処理を終了する。S−13の処理では、性能予測式導出部12は、メモリ使用量や処理時間のオーバヘッドの性能予測計算式15を出力し、処理を終了する。
【0095】
§3:詳細な処理の説明
以下、オブジェクト指向プログラム性能改善支援装置の詳細な処理を説明する。
【0096】
(1) :前記S−3の詳細な説明
図7は詳細な処理フローチャート(その1)であり、前記S−3の詳細な処理を示す。なお、図7において、S−3−1〜S−3−5は各処理ステップを示す。前記S−3の処理では、性能劣化箇所解析部7は、解析対象ソースコード1の全範囲を対象にした性能劣化箇所解析を行ない、性能劣化箇所検出結果8を出力する。以下、この処理を更に詳細に説明する。
【0097】
先ず、S−3−1の処理では、解析制御部2は、入力値3からソースコード名と実行環境名を読み込む。S−3−2の処理では、解析制御部2は、性能劣化箇所解析部7を起動して、ソースコード名と実行環境名を性能劣化箇所解析部7に渡す。S−3−3の処理では、性能劣化箇所解析部7は、実行環境別性能劣化情報6から与えられた実行環境名と一致する項目を読み込む。
【0098】
S−3−4の処理では、性能劣化箇所解析部7は、ソースコード名で指定された解析対象ソースコード1を読み込み、S−3−3で読み込んだ項目に適合する箇所を検出する。S−3−5の処理では、性能劣化箇所解析部7は、S−3−4で検出した箇所と、その箇所が適合した項目の識別情報を、性能劣化箇所検出結果8として出力する。このようにしてS−3の処理を終了する。
【0099】
(2) :前記S−8の詳細な説明
図8は詳細な処理フローチャート(その2)であり、前記S−8の詳細な処理を示す。また、図9は詳細な処理の説明図であり、S−8−3の補足説明である。なお、図8において、S−8−1〜S−8−4は各処理ステップを示す。前記S−8の処理では、反復・集中箇所検出部10は、解析対象ソースコード1を解析して、反復・集中箇所検出結果11を出力する。以下、この処理を更に詳細に説明する。
【0100】
先ず、S−8−1の処理では、解析制御部2は、入力値3から、ソースコード名と、繰り返し多重度、集中度を読み込む。S−8−2の処理では、解析制御部2は、反復・集中箇所検出部10を起動して、ソースコード名、繰り返し多重度、集中度数を反復・集中箇所検出部10に渡す。S−8−3の処理では、反復・集中箇所検出部10は、ソースコード名で指定された解析対象ソースコード1を読み込み、以下のa、b、cの各箇所を検出する。
【0101】
a:繰り返し多重度以上にループが重なっている(ネストしている)箇所を検出する。b:入れ子呼び出しをしている箇所を検出する。c:集中度よりも多くの箇所から呼び出しを受けている処理を検出する。
【0102】
S−8−4の処理では、反復・集中箇所検出部10は、S−8−3で検出した箇所を、反復・集中箇所検出結果11として出力する。以上の処理によりS−8の処理を終了する。
【0103】
次に、S−8−3の処理を図9により補足説明をする。S−8−3の処理における前記aでは、ループ(繰り返し)が多重になっている部分を検出する。このループの多重度は3(ループ1、ループ2、ループ3)なので、繰り返し多重度が2と指定された場合は、検出の対象となる。また、前記bでは、同じ処理(図の処理A)を入れ子に呼び出している部分が検出の対象となる。
【0104】
前記cでは、多数の箇所から呼び出されている箇所を検出する。この場合、図の処理Aは、X.Y.Zの三ケ所から呼び出されているので、集中度が2と指定された場合は、検出の対象となる。
【0105】
(3) :前記S−11の詳細な説明
図10は詳細な処理フローチャート(その3)であり、前記S−11の詳細な処理を示す。なお、図10において、S−11−1〜S−11−5は各処理ステップを示す。S−11の処理では、性能劣化箇所解析部7は、反復・集中箇所検出結果11を対象にした性能劣化箇所解析を行ない、性能劣化箇所検出結果8を出力する。以下、この処理を更に詳細に説明する。
【0106】
S−11−1の処理では、解析制御部2は、入力値3からソースコード名と実行環境名を読み込む。S−11−2の処理では、解析制御部2は、性能劣化箇所解析部7を起動して、ソースコード名と実行環境名を性能劣化箇所解析部7に渡す。S−11−3の処理では、性能劣化箇所解析部7は、実行環境別性能劣化情報6から与えられた実行環境名と一致する項目を読み込む。
【0107】
S−11−4の処理では、性能劣化箇所解析部7は、ソースコード名で指定された反復・集中箇所検出結果11を読み込み、S−11−3の処理で読み込んだ項目に適合する箇所を検出する。S−11−5の処理では、性能劣化箇所解析部7は、S−11−4の処理で検出した箇所と、その箇所が適合した項目の識別情報を、性能劣化箇所検出結果8として出力する。以上の処理により、S−11の処理を終了する。
【0108】
(4) :前記S−13の詳細な説明
図11は詳細な処理フローチャート(その4)、図12は詳細な処理フローチャート(その5)であり、前記S−13の詳細な処理を示す。なお、図11、図12において、S−13−1〜S−13−11は各処理ステップを示す。S−13の処理では、性能予測式導出部12は、メモリ使用量や処理時間のオーバーヘッドの性能予測式15を出力する。以下、この処理を更に詳細に説明する。
【0109】
S−13−1の処理では、解析制御部2は、入力値3にメモリ使用量の予測式の導出が指示されているかを調べ、メモリ使用量の予測式の導出が指示されていればS−13−2の処理へ移行し、メモリ使用量の予測式の導出が指示されていなければS−13−3の処理へ移行する。
【0110】
S−13−2の処理では、性能予測式導出部12は、解析対象ソースコード1のメモリ使用量について、性能予測計算式15を出力する。S−13−5の処理では、性能予測結果表示処理部18は、前記出力された性能予測計算式15を表示する。
【0111】
一方、S−13−3の処理では、解析制御部2は、入力値3に処理時間のオーバーヘッドの予測式の導出が指示されているかを調べ、処理時間のオーバヘッドの予測式の導出が指示されていれば、S−13−4の処理へ移行し、前記性能予測計算式15の導出が指示されていなければ、この処理を終了する。
【0112】
S−13−4の処理では、性能予測式導出部12は、解析対象ソースコード1の処理時間のオーバーヘッドについては、性能予測計算式15を出力し、S−13−5の処理へ移行する。S−13−6の処理では、結果計算部16は、性能予測計算式15を読み込む。
【0113】
S−13−7の処理では、結果計算部16は、性能予測計算式15に変数が残っているかを調べ、性能予測計算式15に変数が残っていれば、S−13−8の処理へ移行し、性能予測計算式15に変数が残っていなければ、S−13−10の処理へ移行する。
【0114】
S−13−8の処理では、結果計算部16は、性能予測計算式15の変数部分に、オペレータが入力した値を代入して計算し、性能予測値17を出力する。S−13−9の処理では、性能予測結果表示処理部18は、性能予測値17を表示し、S−13−7の処理へ移行する。
【0115】
S−13−10の処理では、解析制御部2は、入力値3に性能改善方法の表示が指示されているかを調べ、入力値3に性能改善方法の表示が指示されていれば、S−13−11の処理へ移行し、入力値3に性能改善方法の表示が指示されていなければ、この処理を終了する。
【0116】
S−13−11の処理では、解析制御部2は、改善情報表示処理部5を起動し、性能予測に対する改善情報の表示を指示する。改善情報表示処理部5は、性能予測計算式15に対する実行環境別性能改善情報4を選んで表示する。以上の処理によりS−13の処理を終了する。
【0117】
(5) :前記S−13−2の詳細な説明
図13は詳細な処理フローチャート(その6)、図14は詳細な処理フローチャート(その7)であり、前記S−13−2の詳細な処理を示す。なお、図13、図14において、S−13−2−1〜S−13−2−13は各処理ステップを示す。S−13−2の処理では、性能予測式導出部12は、解析対象ソースコード1のメモリ使用量について、性能予測計算式15を出力する。以下、この処理を更に詳細に説明する。
【0118】
S−13−2−1の処理では、解析制御部2は、入力値3からソースコード名と処理名、実行環境名、登録指示値を読み込む。S−13−2−2の処理では、解析制御部2は、性能予測式導出部12を起動して、ソースコード名と、処理名、実行環境名を性能予測式導出部12に渡す。
【0119】
S−13−2−3の処理では、性能予測式導出部12は、ソースコード名で指定された解析対象ソースコード1を読み込み、処理名で指定された処理の中で、メモリを確保している箇所を検出する。S−13−2−4の処理では、性能予測式導出部12は、クラスまたはタイプ毎にメモリを確保している箇所の数の性能予測計算式15を導出する。
【0120】
そして、S−13−2−5の処理では、性能予測式導出部12は、指定された処理の中で呼び出している処理はあるかを調べ、指定された処理の中で呼び出している処理があればS−13−2−6の処理へ移行し、指定された処理の中で呼び出している処理がなければS13−2−7の処理へ移行する。
【0121】
S−13−2−6の処理では、性能予測式導出部12は、呼び出している処理に対して、S−13−2−3の処理を起動し、S−13−2−3の処理へ移行する。また、S−13−2−7の処理では、性能予測式導出部12は、登録指示値に実行環境別性能予測情報14へ登録が指示されているかを調べ、登録指示値に実行環境別性能予測情報14へ登録が指示されていればS−13−2−8の処理へ移行し、登録指示値に実行環境別性能予測情報14へ登録が指示されていなければS−13−2−11の処理へ移行する。
【0122】
S−13−2−8の処理では、性能予測式導出部12は、メモリを確保している箇所の数の性能予測計算式15を、処理毎に実行環境別性能予測情報14に登録しながら、S−13−2−1の処理で読み込んだ処理名で指示された処理(呼び出しの大元の処理)の性能予測計算式15を、クラスまたはタイプ別に組み立てて出力する。
【0123】
S−13−2−9の処理では、性能予測式導出部12は、S−13−2−8の処理の性能予測計算式15に現れるクラスまたはタイプのメモリ使用量について、実行環境別性能実測情報13から与えられた実行環境名と一致する項目を読み込む。
【0124】
S−13−2−10の処理では、性能予測式導出部12は、S−13−2−9の処理で読み込んだメモリ使用量を用いて、メモリ使用量の性能予測計算式15を、処理毎に実行環境別性能予測情報14に登録しながら、S−13−2−1の処理で読み込んだ処理名で指示された処理(呼び出しの大元の処理)の性能予測計算式15を、クラスまたはタイプ別に組み立てて出力する。
【0125】
一方、S−13−2−11の処理では、性能予測式導出部12は、S−13−2−1の処理で読み込んだ処理名で指示された処理(呼び出しの大元の処理)の性能予測計算式15を、クラスまたはタイプ別に組み立てて出力する。S−13−2−12の処理では、性能予測式導出部12は、S−13−2−8の処理の性能予測計算式15に現れるクラスまたはタイプのメモリ使用量について、実行環境別性能実測情報13から与えられた実行環境名と一致する項目を読み込む。
【0126】
S−13−2−13の処理では、性能予測式導出部12は、S−13−2−9の処理で読み込んだメモリ使用量を用いて、S−13−2−9の処理で読み込んだメモリ使用量を用いて、S−13−2−1で読み込んだ処理(呼び出しの大元の処理)の性能予測計算式15を、クラスまたはタイプ別に組み立てて出力する。以上の処理により、S−13−2の処理を終了する。
【0127】
(6) :前記S−13−4の詳細な説明
図15は詳細な処理フローチャート(その8)、図16は詳細な処理フローチャート(その9)であり、前記S−13−4の詳細な処理を示す。なお、図15、図16において、S−13−4−1〜S−13−4−9は各処理ステップを示す。S−13−4の処理では、性能予測式導出部12は、解析対象ソースコード1の処理時間のオーバーヘッドについて、性能予測計算式15を出力する。以下、この処理を更に詳細に説明する。
【0128】
S−13−4−1の処理では、解析制御部2は、入力値3からソースコード名と処理名、実行環境名、登録指示値を読み込む。S−13−4−2の処理では、解析制御部2は、性能予測式導出部12を起動して、ソースコード名と処理名、実行環境名を性能予測式導出部12に渡す。
【0129】
S−13−4−3の処理では、性能予測式導出部12は、ソースコード名で指示された解析対象ソースコード1を読み込む。S−13−4−4の処理では、性能予測式導出部12は、実行環境別性能実測情報13から処理時間のオーバーヘッドについて、与えられた実行環境名と一致する処理の項目を読み、処理時間のオーバーヘッドの性能予測計算式15を導出する。
【0130】
S−13−4−5の処理では、性能予測式導出部12は、指定された処理の中で呼び出している処理はあるかを調べ、指定された処理の中で呼び出している処理があれば、S−13−4−6の処理へ移行し、指定された処理の中で呼び出している処理がなければS−13−4−7の処理へ移行する。S−13−4−6の処理では、性能予測式導出部12は、呼び出している処理に対して、S−13−4−3の処理を起動し、S−13−4−3の処理へ移行する。
【0131】
S−13−4−7の処理では、性能予測式導出部12は、登録指示値に実行環境別性能予測情報14への登録が指示されているかを調べ、登録指示値に実行環境別性能予測情報14への登録が指示されていれば、S−13−4−8の処理へ移行し、登録指示値に実行環境別性能予測情報14への登録が指示されていなければ、S−13−4−9の処理へ移行する。
【0132】
S−13−4−8の処理では、性能予測式導出部12は、実行時間のオーバーヘッドの性能予測計算式15を、処理毎に実行環境別性能予測情報14に登録しながら、S−13−4−1の処理で読み込んだ処理名で指示された処理(呼び出しの大元の処理)の性能予測計算式15を組み立てて出力する。
【0133】
S−13−4−9の処理では、性能予測式導出部12は、S−13−4−1の処理で読み込んだ処理名で指示された処理(呼び出しの大元の処理)の実行時間のオーバーヘッドの性能予測計算式15を組み立てて出力する。以上の処理によりS−13−4の処理を終了する。
【0134】
以下、図16に示した補足説明の図に基づいて、S−13−2−8の処理、S−13−2−10の処理、及びS−13−4−8の補足説明をする。性能予測式導出部12は、図示のように処理が連鎖的に呼び出されている場合、処理D→処理C→処理B→処理Aの順で性能予測計算式15を作成し、実行環境別性能予測情報14に登録していく。
【0135】
この時、処理Cの計算式は、処理Dの計算式+処理C自身の計算式、処理Aの計算式は、処理Bの計算式+処理Dの計算式+処理A自身の計算式、というように、計算式が階層的な構造を持つ。前記S−13−2の処理、S−13−4の処理全体の出力となるのは、呼び出しの大元である処理Aの性能予測計算式15である。
【0136】
§4:前記各情報等の説明
以下、前記各情報等について説明する。
【0137】
(1) :入力値の例の説明
図17は入力値の例である。前記入力値3は、例えば、図17のようになっている。この例では、入力値3として、1.処理選択値、2.解析箇所選択値、3.反復・集中箇所解析選択値、4.性能予測選択値、5.改善方法表示選択値、6.ソースコード名、7.処理名、8.実行環境名、9.繰返し多重度、10.集中度、11.登録指示値があり、前記各項目に対応して、それぞれの内容がある。
【0138】
例えば、1.処理選択値の項目では、「性能劣化解析」または「性能予測」となっている。5.改善方法表示選択値の項目では、改善方法を「表示する」または「表示しない」となっている。11.登録指示値の項目では、実行環境別性能予測情報に「登録する」または「登録しない」となっている。
【0139】
(2) :実行環境別性能劣化情報例の説明
図18は実行環境別性能劣化情報例であり、A図は実行環境別性能劣化情報の構成の例、B図は実行環境別性能劣化情報の実現例である。なお、図18のA図に示した実行環境別性能劣化情報は、パターン種別と適用範囲は検出を効率的に行うための補助情報である。また、図18のB図に示した実行環境別性能劣化情報において、表中「all」は「全体」を、「L」は「影響大」を示す。
【0140】
前記実行環境別性能劣化情報例では、実行環境名、項目識別名、性能劣化パターン、パターン種別、適用範囲、全体/反復・集中箇所のみ、実行時間のオーバヘッド、実行性能に対する影響の大きさ等の項目がある。そして、前記各項目に情報を格納すると、図18のB図のようになる。
【0141】
図18のB図の例では、例えば、実行環境名=JRE1-1-8-Sun、項目識別名=00001 、性能劣化パターン=readLine、パターン識別=method、適用範囲1=java.io 、適用範囲2=DataInput Stream、全体/反復・集中箇所のみ=all 、実行時間のオーバヘッド=100 、実行性能に対する影響の大きさ=Lとなっている。
【0142】
(3) :実行環境別性能改善情報例の説明
図19は実行環境別性能改善情報例であり、A図は実行環境別性能改善情報の構成の例、B図は実行環境別性能改善情報の実現例である。前記実行環境別性能改善情報の例では、実行環境名、項目識別名、性能劣化情報格納場所アドレス等の項目が設けてある。そして、これらの各項目に情報を格納すると、図19のB図のようになる。
【0143】
(4) :実行環境別性能実測情報例の説明
図20は実行環境別性能実測情報例であり、A図は実行環境別性能実測情報の構成の例、B図は実行環境別性能実測情報の実現例である。前記実行環境別性能実測情報の例では、実行環境名、項目識別名、パターン、パターン種別、適用範囲、メモリ使用量、実行時間のオーバヘッド等の項目が設けてある。そして、これらの各項目に情報を格納すると、図20のB図のようになる。
【0144】
図20のB図の例では、例えば、実行環境名=JRE1-1-8-Sun、項目識別名=00101 、性能劣化パターン=String()、パターン識別=constructor 、適用範囲1=java.lang 、適用範囲2=String、メモリ使用量=58、実行時間のオーバヘッド=50となっている。
【0145】
(5) :連鎖的な呼び出し/実行環境別性能予測情報の説明
図21は、連鎖的な呼び出し/実行環境別性能予測情報の構成の例であり、A図は連鎖的な呼び出しの例、B図は実行環境別性能予測情報の構成の例である。前記連鎖的な呼び出しは、図21のA図に示したように、処理Aはi回繰返すループの中で処理Bを呼び、処理Cはj回繰返すループの中で処理Dを呼んでいるとする。
【0146】
また、図21のB図に示した実行環境別性能予測情報の構成の例では、実行環境名、項目識別名、処理名、適用範囲、メモリ確保箇所数、メモリ使用量、実行時間のオーバヘッドの各項目が設定されている。なお、図21のB図において、パターン種別と適用範囲は検出を効率的に行うための補助情報である。
【0147】
(6) :連鎖的な呼び出しに対する実行環境別性能予測情報の例の説明
図22は、連鎖的な呼び出しに対する実行環境別性能予測情報の例である。
この例では、連鎖的な呼び出しに対する実行環境別性能予測情報の例として、実行環境名、項目識別名、処理名、適用範囲1、2、メモリ確保箇所数、メモリ使用量、実行時間のオーバヘッドの各項目が設定されており、各項目に図示のような情報がある。
【0148】
(7) :連鎖的な呼び出しを持つ処理Aに対する性能予測計算式の説明
図23は、連鎖的な呼び出しを持つ処理Aに対する性能予測計算式を示した図である。この例では、処理Aのメモリ確保箇所数、処理Aのメモリ使用量、処理Aの実行時間のオーバーヘッドの各項目毎の性能予測計算式が示されている。
【0149】
(8) :前記連鎖的な呼び出しを持つ処理Aに対する性能予測値の説明
図24は、連鎖的な呼び出しを持つ処理Aに対する性能予測値を示した図である。この例では、前記処理Aのメモリ確保箇所数、処理Aのメモリ使用量、処理Aの実行時間のオーバーヘッドの各項目毎の性能予測値が示されている。
【0150】
§5:具体的な装置例と記録媒体の説明
図25は具体的な装置例である。前記オブジェクト指向プログラム性能改善支援装置は、パーソナルコンピュータ、ワークステーション等の任意のコンピュータにより実現することができる。この装置は、コンピュータ本体21と、該コンピュータ本体21に接続されたディスプレイ装置22、入力装置(キーボード/マウス等)23、リムーバブルディスクドライブ(「RDD」という)24、ハードディスク装置(「HDD」という)25等で構成されている。
【0151】
そして、コンピュータ本体21には、内部の各種制御や処理を行うCPU26と、プログラムや各種データを格納しておくためのROM27(不揮発性メモリ)と、メモリ28と、インタフェース制御部(「I/F制御部」という)29と、通信制御部30等が設けてある。なお、前記リムーバブルディスクドライブ24には、フレキシブルディスクドライブや光ディスクドライブ等が含まれる。
【0152】
前記構成の装置において、例えば、前記ROM27、或いはハードディスク装置25のディスク(記録媒体)に、前記オブジェクト指向プログラム性能改善支援装置の処理を実現するためのプログラムを格納しておき、このプログラムをCPU26が読み出して実行することにより、前記処理を実行する。
【0153】
しかし、本発明はこのような例に限らず、例えば、ハードディスク装置25のディスクに、次のようにしてプログラムを格納し、このプログラムをCPU26が実行することで前記処理を行うことも可能である。
【0154】
▲1▼:他の装置で作成されたリムーバブルディスクに格納されているプログラム(他の装置で作成したプログラムデータ)を、リムーバブルディスクドライブ24により読み取り、ハードディスク装置25のディスク(記録媒体)に格納する。
【0155】
▲2▼:LANやその他の通信回線を介して他の装置から伝送されたプログラム等のデータを、通信制御部30を介して受信し、そのデータをハードディスク装置25のディスクに格納する。
【0156】
(付記)
(付記1):オブジェクト指向プログラムの実行性能を劣化させる可能性のあるクラス名、処理名、処理パターンを実行環境毎に性能劣化情報として予め蓄積し、これを実行環境別性能劣化情報として用いることで、オブジェクト指向プログラムのソースコードを静的に解析し、ソースコード中で実行性能を劣化させる可能性のある箇所を表示する処理手段を備えていることを特徴とするオブジェクト指向プログラム性能改善支援装置。
【0157】
(付記2):オブジェクト指向プログラムのソースコードを静的に解析し、指定された処理中でメモリを確保している箇所が何箇所あるか、クラス又はタイプ毎に特定の実行環境における数の性能予測計算式を導出し、合わせて実行環境別性能実測情報に予め登録してあるクラス又はタイプ毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する第1の処理手段と、入力値によって指示があった場合は、導出した性能予測計算式を実行環境別性能予測情報に登録する第2の処理手段と、性能予測計算式の変数部分は、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする第3の処理手段と、ユーザが入力した値を性能予測計算式に代入して性能予測値を得る第4の処理手段とを備えていることを特徴とするオブジェクト指向プログラム性能改善支援装置。
【0158】
(付記3):予め登録してある実行環境別性能実測情報を用いて、オブジェクト指向プログラムのソースコードを静的に解析し、指定された処理の、特定の実行環境における処理時間のオーバヘッドの性能予測計算式を導出する第1の処理手段と、入力値によって指示があった場合は、導出した性能予測計算式を実行環境別性能予測情報に登録する第2の処理手段と、性能予測計算式の変換部分は、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする第3の処理手段と、ユーザが入力した値を性能予測計算式に代入して性能予測値を得る第4の処理手段とを備えていることを特徴とするオブジェクト指向プログラム性能改善支援装置。
【0159】
(付記4):コンピュータに、オブジェクト指向プログラムの実行性能を劣化させる可能性のあるクラス名、処理名、処理パターンを実行環境毎に性能劣化情報として予め蓄積し、これを実行環境別性能劣化情報として用いることで、オブジェクト指向プログラムのソースコードを静的に解析し、ソースコード中で実行性能を劣化させる可能性のある箇所を表示する処理手段の機能を実現させるためのプログラム、又は該プログラムを記録したコンピュータ読み取り可能な記録媒体。
【0160】
【発明の効果】
以上説明したように、本発明によれば次のような効果がある。
【0161】
(1) :請求項1では、前記処理手段は、オブジェクト指向プログラムの実行性能を劣化させる可能性のあるクラス名、処理名、処理パターンを実行環境毎に性能劣化情報として予め蓄積し、これを実行環境別性能劣化情報として用いることで、オブジェクト指向プログラムのソースコードを静的に解析し、ソースコード中で実行性能を劣化させる可能性のある箇所を表示する。
【0162】
この場合、従来技術では、ソースコード全体が完成した実行可能な形になっていないと実行性能劣化部分の検出が行なえなかった。それに対して、本発明の装置では、一部分だけ出来ているソースコードを解析して、実行性能を劣化させる可能性のある箇所を検出できる。従って、従来技術よりも開発の早い段階で実行性能に関する問題を発見できる。
【0163】
また、実行環境別性能劣化情報を性能劣化箇所解析部に作り込まず、外部から追加、修正が可能なデータとして蓄積している。従って、例えば、ユーザが自分のプロジェクトに合わせて実行環境別性能劣化情報の追加、修正を行なえるため、ユーザの実行環境や設計方針に合った解析が可能になる。
【0164】
(2) :請求項2では、第1の処理手段は、オブジェクト指向プログラムのソースコードを静的に解析し、指定された処理中でメモリを確保している箇所が何箇所あるか、クラス又はタイプ毎に特定の実行環境における数の性能予測計算式を導出し、合わせて実行環境別性能実測情報に予め登録してあるクラス又はタイプ毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する。
【0165】
第2の処理手段は、入力値によって指示があった場合は、導出した性能予測計算式を実行環境別性能予測情報に登録する。第3の処理手段は、性能予測計算式の変数部分は、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする。第4の処理手段は、ユーザが入力した値を性能予測計算式に代入して性能予測値を得る。
【0166】
この場合、オブジェクト指向プログラムでは、オブジェクト(クラスのインスタンス)や配列がメモリを圧迫することで性能問題が起こることが多い。しかし、従来技術は、ソースコード全体が完成し実行可能な形になってから生成されるオブジェクトや配列の数とメモリ使用量を実測するだけで、事前の予測が行えなかった。
【0167】
本発明の装置では、ソースコードを解析して、或るメソッドが呼ばれた際に生成されるクラスのインスタンスや配列の数の予測式を作る。また、メモリ使用量は、各クラスのインスタンスや配列について実行環境毎に予め実測した情報(実行環境別性能実測情報)を用いて、予測式を作る。ソースコードを解析するだけでは分からない部分は式の変数とし、ユーザと対話しながら解決することができる。
【0168】
また、各処理(メソッドやコンストラクタ)毎に作成した予測式を実行環境別性能予測情報に登録して再利用できるので、同じ処理について予測式を再計算せずに済み、性能予測式導出部の処理を効率化できる。
【0169】
(3) :請求項3では、コンピュータが記録媒体のプログラムを読み出して実行することにより、オブジェクト指向プログラムの実行性能を劣化させる可能性のあるクラス名、処理名、処理パターンを実行環境毎に性能劣化情報として予め蓄積する手順と、これを実行環境別性能劣化情報として用いることで、オブジェクト指向プログラムのソースコードを静的に解析し、ソースコード中で実行性能を劣化させる可能性のある箇所を表示する手順を実行する。
【0170】
この場合、従来技術では、ソースコード全体が完成した実行可能な形になっていないと実行性能劣化部分の検出が行なえなかった。それに対して、本発明の装置では、一部分だけ出来ているソースコードを解析して、実行性能を劣化させる可能性のある箇所を検出できる。従って、従来技術よりも開発の早い段階で実行性能に関する問題を発見できる。
【0171】
また、実行環境別性能劣化情報を性能劣化箇所解析部に作り込まず、外部から追加、修正が可能なデータとして蓄積している。従って、例えば、ユーザが自分のプロジェクトに合わせて実行環境別性能劣化情報の追加、修正を行なえるため、ユーザの実行環境や設計方針に合った解析が可能になる。
【0172】
(4) :付記3では、第1の処理手段は、予め登録してある実行環境別性能実測情報を用いて、オブジェクト指向プログラムのソースコードを静的に解析し、指定された処理の、特定の実行環境における処理時間のオーバヘッドの性能予測計算式を導出する。第2の処理手段は、入力値によって指示があった場合は、導出した性能予測計算式を実行環境別性能予測情報に登録する。
【0173】
第3の処理手段は、性能予測計算式の変換部分は、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする。第4の処理手段は、ユーザが入力した値を性能予測計算式に代入して性能予測値を得る。
【0174】
この場合、従来技術では、ソースコード全体が完成し、実行可能な形になってからメソッドの実行にかかる時間を実測するだけで、事前の予測は行えなかった。本発明の装置では、ソースコードを解析して、処理(メソッドやコンストラクタ)毎に処理時間のオーバヘッドの予測式を作る。
【0175】
式の作成には、基本的な処理のオーバヘッドについて実行環境毎に予め実測した情報(実行環境別性能実測情報)を用いる。このようにして、ソースコードを解析するだけでは分からない部分は式の変数とし、ユーザと対話しながら解決することができる。
【図面の簡単な説明】
【図1】本発明の原理説明図である。
【図2】本発明の実施の形態における装置の説明図(その1)である。
【図3】本発明の実施の形態における装置の説明図(その2)である。
【図4】本発明の実施の形態における装置の説明図(その3)である。
【図5】本発明の実施の形態における装置全体の処理フローチャート(その1)である。
【図6】本発明の実施の形態における装置全体の処理フローチャート(その2)である。
【図7】本発明の実施の形態における詳細な処理フローチャート(その1)である。
【図8】本発明の実施の形態における詳細な処理フローチャート(その2)である。
【図9】本発明の実施の形態における詳細な処理の説明図である。
【図10】本発明の実施の形態における詳細な処理フローチャート(その3)である。
【図11】本発明の実施の形態における詳細な処理フローチャート(その4)である。
【図12】本発明の実施の形態における詳細な処理フローチャート(その5)である。
【図13】本発明の実施の形態における詳細な処理フローチャート(その6)である。
【図14】本発明の実施の形態における詳細な処理フローチャート(その7)である。
【図15】本発明の実施の形態における詳細な処理フローチャート(その8)である。
【図16】本発明の実施の形態における詳細な処理フローチャート(その9)である。
【図17】本発明の実施の形態における入力値の例である。
【図18】本発明の実施の形態における実行環境別性能劣化情報例であり、A図は実行環境別性能劣化情報の構成の例、B図は実行環境別性能劣化情報の実現例である。
【図19】本発明の実施の形態における実行環境別性能改善情報例であり、A図は実行環境別性能改善情報の構成の例、B図は実行環境別性能改善情報の実現例である。
【図20】本発明の実施の形態における実行環境別性能実測情報例であり、A図は実行環境別性能実測情報の構成の例、B図は実行環境別性能実測情報の実現例である。
【図21】本発明の実施の形態における連鎖的な呼出し/実行環境別性能予測情報の構成の例であり、A図は連鎖的な呼出しの例、B図は実行環境別性能予測情報の構成の例である。
【図22】本発明の実施の形態における連鎖的な呼出しに対する実行環境別性能予測情報の例である。
【図23】本発明の実施の形態における連鎖的な呼出しを持つ処理Aに対する性能予測計算式を示した図である。
【図24】本発明の実施の形態における連鎖的な呼出しを持つ処理Aに対する性能予測値を示した図である。
【図25】本発明の実施の形態における具体的な装置例である。
【符号の説明】
1 解析対象ソースコード
2 解析制御部
3 入力値
4 実行環境別性能改善情報
5 改善情報表示処理部
6 実行環境別性能劣化情報
7 性能劣化箇所解析部
8 性能劣化箇所検出結果
9 性能劣化箇所表示処理部
10 反復・集中箇所検出部
11 反復・集中箇所検出結果
12 性能予測式導出部
13 実行環境別性能実測情報
14 実行環境別性能予測情報
15 性能予測計算式
16 結果計算部
17 性能予測値
18 性能予測結果表示処理部
21 コンピュータ本体
22 ディスプレイ装置
23 入力装置
24 リムーバブルディスクドライブ(RDD)
25 ハードディスク装置(HDD)
26 CPU
27 ROM
28 メモリ
29 インターフェイス制御部(I/F制御部)
30 通信制御部
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to an object-oriented program performance improvement support apparatus and a recording medium for supporting execution performance improvement of an object-oriented program.
[0002]
[Prior art]
Conventionally, when performing object-oriented design, a technique called a profiler has been used for performance evaluation (evaluation of memory usage and number of instances). This profiler measures the number of generated instances and the memory usage while actually executing the program.
[0003]
In this case, in order to use the profiler, source code (executable program) that can be compiled and executed is required. That is, generally, when design information is given, a source code is generated from the design information, and the source code is compiled to create an executable source code (executable program).
[0004]
Then, the profiler measures the number of instances generated and the memory usage while actually executing the executable source code, and evaluates the performance based on the result information.
[0005]
[Problems to be solved by the invention]
The conventional apparatus as described above has the following problems.
[0006]
In a technique called a conventional profiler, it is necessary to complete a program until it can be compiled and linked. In other words, performance bottlenecks cannot be detected until the development is almost complete. In addition, even if the performance bottleneck is clear, it is not clear what improvements should be made.
[0007]
The present invention solves such a conventional problem, statically analyzes the source code of the object-oriented program, detects a portion that may deteriorate the execution performance, and presents an improvement plan for the portion. The purpose is to help improve the performance of the program.
[0008]
[Means for Solving the Problems]
FIG. 1 is a diagram illustrating the principle of the present invention. In FIG. 1, the performance deterioration analysis unit includes a performance deterioration point analysis unit 7, a performance deterioration point display processing unit 9, and an iterative / concentrated point detection unit 10. The performance prediction unit includes a performance prediction formula deriving unit 12 and The result calculation unit 16 and the performance prediction result display processing unit 18 are provided, and the common unit includes the analysis control unit 2 and the improvement information display processing unit 5. In order to achieve the above object, the present invention is configured as follows.
[0009]
(1): In the object-oriented program performance improvement support device, class names, processing names, and processing patterns that may degrade the execution performance of object-oriented programs are stored in advance as performance degradation information for each execution environment and executed. By using it as performance degradation information for each environment, the processing means (performance degradation location analysis unit 7, performance analysis location analysis unit 7, static analysis of the source code of the object-oriented program, and displaying the location where execution performance may be degraded in the source code (Means including a performance degradation point display processing unit 9).
[0010]
(2): In the object-oriented program performance improvement support apparatus of (1), an execution environment in which a performance improvement method for each execution environment is registered in advance for a portion in the source code where the performance may be degraded. Processing means (means including the improvement information display processing unit 5) for displaying a programming improvement method using another performance improvement information is provided.
[0011]
(3): In the object-oriented program performance improvement support device of (1) above, where the analysis target source code is statically analyzed, loops, recursive calls, methods used in many places, etc. Or a repetitive / concentrated location detecting means (means including the repetitive / concentrated location detecting unit 10), and only a location where the number of executions is increased is analyzed for each item of performance degradation information by execution environment, or It is possible to switch whether to analyze the entire range of source code.
[0012]
(4): In the object-oriented program performance improvement support device of (1), it is possible to register and modify information that ranks the degree of influence on execution performance for each item of performance degradation information by execution environment. Among them, processing means (means including the performance deterioration part display processing unit 9) for displaying the parts that may deteriorate the execution performance in order of magnitude of influence on the execution performance are provided.
[0013]
(5): Analyzing the source code of an object-oriented program statically and predicting the number of places where memory is secured in the specified processing, the number of performances in a specific execution environment for each class or type Deriving a calculation formula, and also using the memory usage information for each class or type registered in advance in the performance measurement information for each execution environment, a performance prediction calculation formula for the memory usage in a specific execution environment is derived. 1 processing means (means including a part of the performance prediction formula deriving unit 12);
When instructed by the input value, second processing means (means including a part of the performance prediction formula deriving unit 12) for registering the derived performance prediction calculation formula in the performance prediction information for each execution environment, and performance prediction calculation The variable part of the expression displays the corresponding source code part, and the third processing means (means including the performance prediction result display processing unit 18) that allows the user to input interactively, and the value input by the user 4th processing means (means including the result calculation part 16) which obtains a performance predicted value by substituting into the performance prediction calculation formula.
[0014]
(6): In the object-oriented program performance improvement support device, using the performance measurement information for each execution environment registered in advance, the object-oriented program source code is statically analyzed, and the specified process is executed. First processing means for deriving a performance prediction calculation formula for processing time overhead in the environment (means including a part of the performance prediction formula deriving unit 12), and when there is an instruction by an input value, the derived performance prediction calculation The second processing means (the means including a part of the performance prediction formula deriving unit 12) for registering the formula in the performance prediction information for each execution environment and the conversion part of the performance prediction formula display the corresponding source code location. The third processing means (means including the performance prediction result display processing unit 18) that allows the user to input interactively and the value input by the user are substituted into the performance prediction calculation formula to obtain the performance prediction value. 4th processing means (means including the result calculation part 16).
[0015]
(7): In the object-oriented program performance improvement support device of (5), for reducing the amount of secured memory by using performance improvement information for each execution environment in which performance improvement methods for each execution environment are registered in advance. Processing means for displaying a programming improvement method (means including the improvement information display processing unit 5) is provided.
[0016]
(8): In the object-oriented program performance improvement support device according to (6), an execution in which a performance improvement method for each execution environment is registered in advance for a portion where processing time overhead is generated in the source code Processing means (means including the improvement information display processing unit 5) for displaying a program improvement method using environment-specific performance improvement information is provided.
[0017]
In summary, the configuration of the present invention is as follows.
(a): Analyzing the source code of an object-oriented program and detecting a portion where there is a possibility of performance degradation;
A performance prediction unit for predicting performance;
A common part common to the performance deterioration analysis part and the performance prediction part,
In the performance degradation analysis unit,
Performance degradation information storage means for each execution environment that stores performance degradation information for each execution environment in advance, and a performance degradation location analysis unit that performs performance degradation analysis processing. And a performance degradation location display processing unit that displays detection information of the performance degradation location on the screen of the display device,
The common unit includes a source code storage unit that stores a source code of an object-oriented program to be analyzed, and an analysis control unit that performs analysis control on the performance degradation point analysis unit based on an input value from the outside. At least an object-oriented program performance improvement support device provided,
The performance degradation part analysis unit takes in the source code of the analysis target source code storage means under the control of the analysis control means, and performs static analysis without operating the source code, and the performance degradation by execution environment Of information storage means Performance degradation It has a function to detect locations that contain information as locations that may degrade execution performance.
The performance degradation point display processing unit has a function of displaying information on a result detected by the performance degradation point analysis unit on a screen of a display device,
In the performance prediction unit,
Execution environment-specific performance measurement information registration means for pre-registering execution environment-specific performance measurement information, execution environment-specific performance prediction information registration means for pre-registering execution environment-specific performance prediction information, and performance prediction formula derivation processing At least a performance prediction formula deriving unit, a result calculation unit, and a performance prediction result display processing unit that performs processing for displaying performance prediction result information on the screen of the display device,
The performance prediction formula deriving unit takes in the source code of the analysis target source code storage unit under the control of the analysis control unit, performs static analysis without operating the source code, and in a designated process, An instance of a class that is created when a method is called Or A performance prediction formula for the number of arrays is derived, and is also registered in advance in the performance measurement information registration means for each execution environment. Per class A function for deriving a performance prediction calculation formula for memory usage in a specific execution environment using the memory usage information of
When there is an instruction by an external input value, the derived performance prediction formula has a function of registering in the execution environment performance prediction information registration means,
The result calculation unit has a function of obtaining a performance prediction value by substituting a value input by a user into the performance prediction calculation formula,
The performance prediction result display processing unit has a function of displaying a location of the source code corresponding to a variable part of the performance prediction calculation formula on a screen of a display device,
The result calculation unit has a function of obtaining a performance predicted value by substituting a value input by a user based on the displayed information into a performance prediction formula derived by the performance prediction formula deriving unit. .
[0018]
(Function)
The operation of the present invention based on the above configuration will be described.
[0019]
(a): In the above (1), the processing means accumulates in advance as performance degradation information for each execution environment a class name, a processing name, and a processing pattern that may degrade the execution performance of the object-oriented program. Is used as performance degradation information for each execution environment, so that the source code of the object-oriented program is statically analyzed, and a portion in the source code where the execution performance may be degraded is displayed.
[0020]
In this case, in the prior art, the execution performance deterioration portion cannot be detected unless the entire source code is in a complete executable form. On the other hand, in the apparatus of the present invention, it is possible to analyze a part of the source code and detect a portion that may deteriorate the execution performance. Therefore, problems relating to execution performance can be found at an earlier stage of development than in the prior art.
[0021]
Further, the performance degradation information for each execution environment is not created in the performance degradation location analysis unit 7, but is stored as data that can be added or modified from the outside. Therefore, for example, since the user can add and modify performance degradation information for each execution environment according to his / her project, analysis according to the user's execution environment and design policy becomes possible.
[0022]
(b): In the above (2), the processing means performs performance improvement for each execution environment in which a performance improvement method for each execution environment is registered in advance for a portion where the performance in the source code may be deteriorated. Use information to show how to improve programming.
[0023]
In this case, in the prior art, only the performance degradation portion is pointed out, whereas in the apparatus of the present invention, a countermeasure can be presented for a portion where the execution performance may be degraded. . Further, the performance improvement information for each execution environment is not created in the improvement information display processing unit 5, but is stored as data that can be added or modified from the outside.
[0024]
For this reason, since the user can add or modify performance improvement information for each execution environment according to his / her project, it is possible to present a countermeasure suitable for the user's execution environment and design policy.
[0025]
(c): In (3) above, the iterative / concentrated part detection means statically analyzes the source code to be analyzed, and places where the number of executions increases, such as loops, recursive calls, and methods used in many places. Is identified. As a result, for each item of the performance degradation information by execution environment, it is possible to switch whether to analyze only a portion where the number of executions is increased or to analyze the entire range of the source code.
[0026]
By the way, each class name, process name, and process pattern that may degrade execution performance, that is, each item of performance degradation information by execution environment, is roughly classified as appearing repeatedly even if it only appears once. There are two types of problems (in other words, there is no problem once only).
[0027]
In the apparatus of the present invention, an item that becomes a problem even if it appears once is detected for the entire source code to be analyzed, and an item that becomes a problem when it appears repeatedly is detected based on the result of repeated / concentrated location detection. By doing so, it is possible to prevent excessive detection that points out that items that are not a problem only once are appearing in a portion that is not repeated or concentrated.
[0028]
In addition, the boundary between what appears to be a problem even if it appears once and what becomes a problem if it appears repeatedly often varies depending on the design policy of the user and the nature of the target system. In addition, how many times it is appropriate to set “the number of executions is large” also differs depending on the user.
[0029]
With the apparatus of the present invention, the user can modify each item of the performance degradation information for each execution environment to flexibly analyze only the portion where the number of executions is increased or whether the entire range of the source code is to be analyzed. You can switch to Also, the user can specify how many times or more are detected as repetition / concentration. This allows the user to perform the optimal analysis for his project.
[0030]
(d): In the above (4), the processing means enables registration and correction of information that ranks the degree of influence on execution performance for each item of performance degradation information by execution environment, and executes it in the source code. The parts that may degrade the performance are displayed in order of magnitude of the influence on the execution performance.
[0031]
Each item of the class name, process name, and processing pattern that may degrade the execution performance, that is, the performance degradation information for each execution environment, has a large influence and a small influence on the execution performance. When solving a problem, it is desirable to perform in descending order of influence on execution performance.
[0032]
In the apparatus of the present invention, the performance degradation location analysis result (output of the performance degradation location analysis unit 7) is obtained by registering information that ranks the degree of influence on execution performance for each item of performance degradation information by execution environment. It is possible to display in descending order of influence on execution performance.
[0033]
In addition, the magnitude of the impact on execution performance often differs depending on the nature of the system and the execution environment that the user constructs, but by correcting the performance degradation information for each execution environment, it is possible to obtain optimal analysis results for the user. can do.
[0034]
(e): In the above (5), the first processing means statically analyzes the source code of the object-oriented program, and determines how many places the memory is secured in the specified processing. Alternatively, a number of performance prediction calculation formulas for a specific execution environment are derived for each type, and the memory usage information for each class or type registered in advance in the performance measurement information for each execution environment is used to specify the specific execution environment. The formula for calculating the performance prediction of memory usage is derived.
[0035]
When instructed by the input value, the second processing means registers the derived performance prediction calculation formula in the performance prediction information for each execution environment. The third processing means displays the location of the corresponding source code in the variable part of the performance prediction calculation formula, and allows the user to interactively input it. The fourth processing means obtains a performance predicted value by substituting the value input by the user into the performance prediction calculation formula.
[0036]
In object-oriented programs, objects (class instances) and arrays often cause performance problems due to memory pressure. However, the prior art cannot predict in advance only by actually measuring the number of objects and arrays generated and the memory usage after the entire source code is completed and becomes executable.
[0037]
In the apparatus of the present invention, the source code is analyzed, and a prediction expression for the number of instances of the class and the number of arrays generated when a certain method is called is created. In addition, the memory usage amount is predicted by using information measured in advance for each execution environment for each class instance and array (performance measurement information for each execution environment). The part that cannot be understood only by analyzing the source code can be solved by interacting with the user.
[0038]
Further, since the prediction formula created for each process (method or constructor) can be registered and reused in the performance prediction information for each execution environment, it is not necessary to recalculate the prediction formula for the same process, and the performance prediction formula deriving unit 12 Can be made more efficient.
[0039]
(f): In the above (6), the first processing means statically analyzes the source code of the object-oriented program using the performance measurement information classified by execution environment registered in advance, and performs the specified processing. Then, a performance prediction calculation formula for processing time overhead in a specific execution environment is derived. When instructed by the input value, the second processing means registers the derived performance prediction calculation formula in the performance prediction information for each execution environment.
[0040]
The third processing means displays the location of the corresponding source code in the conversion part of the performance prediction calculation formula, and allows the user to input interactively. The fourth processing means obtains a performance predicted value by substituting the value input by the user into the performance prediction calculation formula.
[0041]
In this case, in the prior art, the entire source code is completed and after it becomes an executable form, it is only possible to actually measure the time required to execute the method, and a prior prediction cannot be performed. In the apparatus of the present invention, the source code is analyzed, and a prediction formula for processing time overhead is created for each process (method or constructor).
[0042]
The formula is created using information (measurement performance information for each execution environment) measured in advance for each execution environment with respect to basic processing overhead. In this way, a part that cannot be understood only by analyzing the source code can be set as an expression variable and solved while interacting with the user.
[0043]
(g): In the above (7), the processing means uses the performance improvement information for each execution environment in which a performance improvement method for each execution environment is registered in advance to improve programming to reduce the amount of memory to be secured. Display method.
[0044]
In this case, in the prior art, only the performance degradation portion is pointed out, whereas in the apparatus of the present invention, a countermeasure can be presented for a portion where the execution performance may be degraded. . Further, the performance improvement information for each execution environment is not created in the improvement information display processing unit 5, but is stored as data that can be added or modified from the outside.
[0045]
Therefore, since the user can add or modify the performance improvement information 4 for each execution environment according to his / her project, it is possible to present a countermeasure corresponding to the user's execution environment and design policy.
[0046]
(h): In the above (8), the processing means stores performance improvement methods for each execution environment, in which performance improvement methods for each execution environment are registered in advance for a portion where processing time overhead is generated in the source code. Display the program improvement method using the improvement information.
[0047]
In this case, in the prior art, only the performance degradation portion is pointed out, whereas in the apparatus of the present invention, a countermeasure can be presented for a portion where the execution performance may be degraded. . Further, the performance improvement information for each execution environment is not created in the improvement information display processing unit 5, but is stored as data that can be added or modified from the outside.
[0048]
In this way, the user can add or modify the performance improvement information 4 for each execution environment according to his / her project, so that it is possible to present a countermeasure that matches the user's execution environment and design policy.
[0049]
(i): In the above (9), a class name that may degrade the execution performance of the object-oriented program when the computer reads and executes the program on the recording medium or by executing the program. The process name and processing pattern are stored in advance as performance degradation information for each execution environment, and by using this as performance degradation information for each execution environment, the object-oriented program source code is statically analyzed, and the source code Execute the procedure to display the location that may degrade the execution performance.
[0050]
In this case, in the prior art, the execution performance deterioration portion cannot be detected unless the entire source code is in a complete executable form. On the other hand, in the apparatus of the present invention, it is possible to analyze a part of the source code and detect a portion that may deteriorate the execution performance. Therefore, problems relating to execution performance can be found at an earlier stage of development than in the prior art.
[0051]
Further, the performance degradation information for each execution environment is not created in the performance degradation location analysis unit 7, but is stored as data that can be added or modified from the outside. Therefore, for example, since the user can add and modify performance degradation information for each execution environment according to his / her project, analysis according to the user's execution environment and design policy becomes possible.
[0052]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
[0053]
§1: Device description
2 is an explanatory diagram of the device (part 1), FIG. 3 is an explanatory diagram of the device (part 2), and FIG. 4 is an explanatory diagram of the device (part 3). Hereinafter, an object-oriented program performance improvement support apparatus will be described with reference to FIGS.
[0054]
As shown in FIG. 2, the object-oriented program performance improvement support apparatus is roughly divided into a common unit A, a performance deterioration analysis unit B that performs performance deterioration analysis processing, and a performance prediction unit C that performs performance prediction processing. ing.
[0055]
As shown in FIG. 3, the common unit A includes an analysis control unit 2 that performs control at the time of analysis, and an improvement information display processing unit 5 that performs display processing of improvement information. The information of the common part A includes the analysis target source code 1, the input value 3, and the performance improvement information 4 for each execution environment.
[0056]
The performance deterioration analysis unit B detects a performance deterioration point analysis unit 7 that performs analysis processing of a performance deterioration point, a performance deterioration point display processing unit 9 that displays the performance deterioration point on the screen of the display device, and a repeated / concentrated point. A repetition / concentration location detection unit 10 is provided. The information of the performance degradation analysis unit B includes performance degradation information 6 for each execution environment, a performance degradation location detection result 8, and a repeated / concentrated location detection result 11.
[0057]
As shown in FIG. 4, the performance prediction unit C includes a performance prediction formula derivation unit 12 that performs a performance prediction formula derivation process, a result calculation unit 16 that performs a result calculation process, and a performance prediction result display processing unit 18. Yes. The information of the performance prediction unit C includes performance measurement information 13 for each execution environment, performance prediction information 14 for each execution environment, a performance prediction calculation formula 15, and a performance prediction value 17.
[0058]
The processing characteristics of the object-oriented program performance improvement support apparatus having the above-described configuration are as follows.
[0059]
(1): Class names, process names, and processing patterns that may degrade the execution performance of the object-oriented program are stored in advance as performance degradation information for each execution environment (hereinafter, this is referred to as “performance degradation information 6 by execution environment”). The performance degradation location analysis unit 7 uses this to statically analyze the source code of the object-oriented program (analysis target source code 1), and the performance performance may be degraded in the source code. The performance deterioration location detection result 8 is displayed on the display screen of the display device by the performance degradation location display processing unit 9.
[0060]
In this case, in the conventional technique, the execution performance deterioration portion cannot be detected unless the entire source code is in a complete executable form. On the other hand, in the apparatus of the present invention, it is possible to analyze a part of the source code and detect a portion that may deteriorate the execution performance. Therefore, problems relating to execution performance can be found at an earlier stage of development than in the prior art.
[0061]
In addition, the performance degradation information 6 for each execution environment is not created in the performance degradation location analysis unit 7, but is stored as data that can be added or modified from the outside. For example, since the user can add and modify the performance degradation information 6 for each execution environment according to his / her project, analysis according to the user's execution environment and design policy becomes possible.
[0062]
(2): In the object-oriented program performance improvement support apparatus according to (1), a performance improvement method for each execution environment with respect to a location (performance degradation location detection result 8) that may degrade the performance in the source code. Is recorded in advance on the display screen of the display device, using the performance improvement information 4 classified by execution environment registered in advance.
[0063]
In this case, in the prior art, only the performance degradation portion is pointed out, whereas in the apparatus of the present invention, a countermeasure can be presented for a portion where the execution performance may be degraded. . Further, the performance improvement information 4 for each execution environment is not created in the improvement information display processing unit 5, but is stored as data that can be added or modified from the outside. For this reason, since the user can add or modify the performance improvement information 4 for each execution environment according to his / her project, it is possible to present a countermeasure suitable for the user's execution environment and design policy.
[0064]
(3): In the object-oriented program performance improvement support device of (1), the analysis target source code 1 is statically analyzed, and the number of executions such as loops, recursive calls, and methods used in many places increases. It has an iteration / concentration location detection unit 10 that identifies a location (repetition / concentration location detection result 11), and a location where the number of executions increases (repetition / concentration location detection result 11) for each item of performance degradation information 6 by execution environment. ) Only to be analyzed, or whether the entire range of source code (analysis target source code 1) is to be analyzed can be switched.
[0065]
The class name, process name, and process pattern (that is, each item of the performance degradation information 6 for each execution environment) that may degrade the execution performance are roughly divided into those that appear as problems even if they appear once. There are two types of problems (in other words, there is no problem once only). In the apparatus of the present invention, an item that becomes a problem even if it appears once is detected in the entire source code 1 to be analyzed, and an item that becomes a problem when it appears repeatedly is an iteration / concentration location detection result 11 (an iteration / concentration location detection unit). 10 outputs).
[0066]
By doing so, it is possible to prevent excessive detection that points out that items that are not a problem only once are appearing in a portion that is not repeated or concentrated.
[0067]
In addition, the boundary between what appears to be a problem even if it appears once and what becomes a problem if it appears repeatedly often varies depending on the design policy of the user and the nature of the target system. In addition, how many times it is appropriate to set “the number of executions is large” also differs depending on the user. In the apparatus of the present invention, the user modifies each item of the performance degradation information 6 for each execution environment so that only the portion where the number of executions is increased is to be analyzed or whether the entire range of the source code is to be analyzed. Can be switched flexibly. Also, the user can specify how many times or more are detected as repetition / concentration. This allows the user to perform the optimal analysis for his project.
[0068]
(4): In the object-oriented program performance improvement support apparatus of (1), information that ranks the degree of influence on execution performance can be registered and modified for each item of performance degradation information 6 by execution environment. The performance degradation location display processing unit 9 orders the locations where the execution performance may be degraded in the code (performance degradation location detection result 8) according to the magnitude of the influence on the execution performance, and displays them on the display screen of the display device To do.
[0069]
The class name, process name, and process pattern (that is, each item of the performance degradation information 6 for each execution environment) that may deteriorate the execution performance may have a large influence or a small influence on the execution performance. When solving a problem, it is desirable to perform in descending order of influence on execution performance.
[0070]
In the apparatus of the present invention, by registering information that ranks the degree of influence on execution performance for each item of the performance degradation information 6 by execution environment, the performance degradation location detection result 8 (output of the performance degradation location analysis unit 7) is registered. ) Can be displayed in descending order of influence on execution performance. In addition, although the magnitude of the influence on execution performance often varies depending on the nature of the system constructed by the user and the execution environment, it is possible to obtain the optimum analysis result for the user by correcting the performance degradation information 6 for each execution environment. Can be.
[0071]
(5): Statically analyze the source code of the object-oriented program (analysis target source code 1), specify the number of locations where the memory is secured in the specified processing, and specify for each class or type A number of performance prediction formulas 15 in the execution environment are derived. In addition, using the memory usage information for each class or type registered in advance in the performance measurement information 13 for each execution environment, a memory usage performance prediction calculation formula 15 in a specific execution environment is derived.
[0072]
When there is an instruction by the input value 3, the derived performance prediction calculation formula 15 is registered in the performance prediction information 14 by execution environment. For the variable portion of the performance prediction calculation formula 15, the performance prediction result display processing unit 18 displays the location of the corresponding source code so that the user can interactively input it. The result calculation unit 16 substitutes the value input by the user into the performance prediction calculation formula 15 to obtain the performance prediction value 17.
[0073]
In this case, in an object-oriented program, a performance problem often occurs because an object (an instance of a class) or an array presses a memory. However, the prior art cannot predict in advance only by actually measuring the number of objects and arrays generated and the memory usage after the entire source code is completed and becomes executable.
[0074]
In the apparatus of the present invention, the source code is analyzed, and a prediction expression for the number of instances of the class and the number of arrays generated when a certain method is called is created. In addition, the memory usage amount is predicted by using information measured in advance for each execution environment for each class instance and array (performance measurement information 13 for each execution environment). The part that cannot be understood only by analyzing the source code is set as an expression variable and solved while interacting with the user.
[0075]
Moreover, since the prediction formula created for each process (method or constructor) can be registered and reused in the performance prediction information 14 for each execution environment, it is not necessary to recalculate the prediction formula for the same process, and the performance prediction formula derivation unit 12 processes can be made efficient.
[0076]
(6): In the object-oriented program performance improvement support device, the source code (analysis target source code 1) of the object-oriented program is statically analyzed and designated by using the performance measurement information 13 classified by execution environment registered in advance. The “performance estimation formula 15 for processing time overhead in a specific execution environment” is derived.
[0077]
Further, when an instruction is given by the input value 3, the derived performance prediction calculation formula 15 is registered in the performance prediction information 14 for each execution environment. And the conversion part of the performance prediction calculation formula 15 displays the location of the corresponding source code on the display screen of the display device, and allows the user to input interactively. The result calculation unit 16 substitutes the value input by the user into the performance prediction calculation formula 15 to obtain the performance prediction value 17.
[0078]
In this case, in the prior art, the entire source code is completed and after it becomes an executable form, it is only possible to actually measure the time required to execute the method, and a prior prediction cannot be performed. In the apparatus of the present invention, the source code is analyzed, and a prediction formula for processing time overhead is created for each process (method or constructor).
[0079]
For the creation of the prediction formula, information measured in advance for each execution environment with respect to basic processing overhead (performance measurement information 13 for each execution environment) is used. The part that cannot be understood only by analyzing the source code is set as an expression variable and solved while interacting with the user.
[0080]
(7): In the object-oriented program performance improvement support device of (5), the improvement information display processing unit 5 uses the performance improvement information 4 for each execution environment in which the performance improvement method for each execution environment is registered in advance. Display programming improvements to reduce the amount of memory reserved.
[0081]
In this case, in the conventional technique, only the performance degradation portion is pointed out, whereas in the apparatus of the present invention, a countermeasure can be presented for a portion that may degrade the execution performance. Further, the performance improvement information 4 for each execution environment is not created in the improvement information display processing unit 5, but is stored as data that can be added or modified from the outside.
[0082]
In this way, the user can add or modify the performance improvement information 4 for each execution environment according to his / her project, so that it is possible to present a countermeasure that matches the user's execution environment and design policy.
[0083]
(8): In the object-oriented program performance improvement support device according to (6), an execution in which a performance improvement method for each execution environment is registered in advance for a portion where processing time overhead is generated in the source code Using the performance improvement information 4 by environment, the improvement information display processing unit 5 displays the program improvement method on the display screen of the display device.
[0084]
In this case, in the prior art, only the performance degradation portion is pointed out, whereas in the apparatus of the present invention, a countermeasure can be presented for a portion where the execution performance may be degraded. .
[0085]
Further, the performance improvement information 4 for each execution environment is not created in the improvement information display processing unit 5, but is stored as data that can be added or modified from the outside. In this way, the user can add or modify the performance improvement information 4 for each execution environment according to his / her project, so that it is possible to present a countermeasure that matches the user's execution environment and design policy.
[0086]
§2: Explanation of overall device processing
FIG. 5 is a process flowchart (part 1) of the entire apparatus, and FIG. 6 is a process flowchart (part 2) of the entire apparatus. Hereinafter, processing of the entire object-oriented program performance improvement support apparatus will be described with reference to FIGS. S-1 to S-13 indicate each processing step.
[0087]
In the process of S-1, the analysis control unit 2 reads the input value 3. And in the process of S-2, the analysis control part 2 investigates whether the performance degradation location analysis of the whole analysis object source code 1 is instruct | indicated for the input value 3, and if performance degradation location analysis is instruct | indicated, The process proceeds to S-3, and if the performance degradation location analysis is not instructed, the process proceeds to S-7.
[0088]
In the process of S-3, the performance deterioration portion analysis unit 7 performs a performance deterioration portion analysis for the entire range of the analysis target source code 1, and outputs a performance deterioration portion detection result 8. And in the process of S-4, the performance degradation location display process part 9 displays the performance degradation location detection result 8 in order of the magnitude | size of the influence with respect to execution performance, and displays it.
[0089]
Next, in the process of S-5, the analysis control unit 2 checks whether the display of the performance improvement method is instructed to the input value 3, and if the display of the performance improvement method is instructed to the input value 3, If the display of the performance improvement method is not instructed to the input value 3, the process is terminated.
[0090]
In the process of S-6, the analysis control unit 2 activates the improvement information display processing unit 5 and instructs the display of the improvement information for the performance deterioration portion. The improvement information display processing unit 5 selects and displays the performance improvement information 4 for each execution environment with respect to the performance degradation point detection result 8, and ends the processing.
[0091]
In the process of S7, the analysis control unit 2 checks whether the input value 3 is instructed to detect the repetition / concentration part of the process, and if the input value 3 is instructed to detect the repetition / concentration part of the process, S If the input value 3 is not instructed to detect the repetition or concentration of the process, the process proceeds to S-12.
[0092]
In the process of S-8, the iteration / concentration location detection unit 10 analyzes the analysis target source code 1 and outputs the iteration / concentration location detection result 11. In the process of S-9, the performance degradation location display processing unit 9 displays the repeated / concentrated location detection result 11. In the process of S-10, the analysis control unit 2 checks whether the input value 3 is instructed to analyze the performance deterioration of the repeated / concentrated portion, and the input value 3 is instructed to analyze the performance deterioration of the repeated / concentrated portion. If so, the process proceeds to S-11, and if the input value 3 is not instructed to analyze the performance degradation of the repeated / concentrated part, this process is terminated.
[0093]
In the process of S-11, the performance deterioration part analysis unit 7 performs a performance deterioration part analysis for the repeated / concentrated part detection result 11, outputs the performance deterioration part detection result 8, and proceeds to the process of S-4. To do.
[0094]
In the process of S12, the analysis control unit 2 checks whether the input value 3 is instructed to derive the performance prediction expression. If the input value 3 is instructed to derive the performance prediction expression, the process proceeds to the process of S-13. If the process is shifted and the input value 3 is not instructed to derive the performance prediction formula, this process is terminated. In the process of S-13, the performance prediction formula deriving unit 12 outputs the performance prediction calculation formula 15 for the overhead of the memory usage and the processing time, and ends the process.
[0095]
§3: Detailed processing explanation
Hereinafter, detailed processing of the object-oriented program performance improvement support apparatus will be described.
[0096]
(1): Detailed description of S-3
FIG. 7 is a detailed process flowchart (part 1) and shows the detailed process of S-3. In FIG. 7, S-3-1 to S-3-5 indicate each processing step. In the process of S-3, the performance deterioration portion analysis unit 7 performs a performance deterioration portion analysis for the entire range of the analysis target source code 1, and outputs a performance deterioration portion detection result 8. Hereinafter, this process will be described in more detail.
[0097]
First, in the process of S-3-1, the analysis control unit 2 reads the source code name and the execution environment name from the input value 3. In the process of S-3-2, the analysis control unit 2 activates the performance deterioration point analysis unit 7 and passes the source code name and the execution environment name to the performance deterioration point analysis unit 7. In the process of S-3-3, the performance degradation location analysis unit 7 reads an item that matches the execution environment name given from the performance degradation information 6 for each execution environment.
[0098]
In the process of S-3-4, the performance deterioration part analysis unit 7 reads the analysis target source code 1 specified by the source code name, and detects a part that matches the item read in S-3-3. In the process of S-3-5, the performance degradation location analysis unit 7 outputs the location detected in S-3-4 and the identification information of the item to which the location is matched as the performance degradation location detection result 8. In this way, the process of S-3 ends.
[0099]
(2): Detailed explanation of S-8
FIG. 8 is a detailed process flowchart (part 2) showing the detailed process of S-8. FIG. 9 is an explanatory diagram of detailed processing, and is a supplementary explanation of S-8-3. In FIG. 8, S-8-1 to S-8-4 indicate processing steps. In the process of S-8, the iteration / concentration location detection unit 10 analyzes the analysis target source code 1 and outputs the iteration / concentration location detection result 11. Hereinafter, this process will be described in more detail.
[0100]
First, in the process of S-8-1, the analysis control unit 2 reads the source code name, the repetition multiplicity, and the concentration degree from the input value 3. In the process of S-8-2, the analysis control unit 2 activates the repetition / concentration location detection unit 10 and passes the source code name, the repetition multiplicity, and the concentration frequency to the repetition / concentration location detection unit 10. In the process of S-8-3, the repetition / concentration location detection unit 10 reads the analysis target source code 1 specified by the source code name, and detects the following locations a, b, and c.
[0101]
a: Detects a place where loops overlap (nest) more than the repetition multiplicity. b: Detects a place where a nested call is made. c: A process that receives a call from more points than the degree of concentration is detected.
[0102]
In the process of S-8-4, the iteration / concentration location detection unit 10 outputs the location detected in S-8-3 as the iteration / concentration location detection result 11. The process of S-8 is completed by the above process.
[0103]
Next, the process of S-8-3 will be supplementarily described with reference to FIG. In the a in the process of S-8-3, a portion where a loop (repetition) is multiplexed is detected. Since the multiplicity of this loop is 3 (loop 1, loop 2, loop 3), when the repetitive multiplicity is designated as 2, it becomes a detection target. Also, in b, the part that calls the same process (process A in the figure) in a nested manner is the detection target.
[0104]
In c, a location called from a number of locations is detected. In this case, the process A in FIG. Y. Since it is called from three locations of Z, when the degree of concentration is designated as 2, it becomes a detection target.
[0105]
(3): Detailed explanation of S-11
FIG. 10 is a detailed process flowchart (part 3), showing the detailed process of S-11. In FIG. 10, S-11-1 to S-11-5 indicate processing steps. In the process of S-11, the performance degradation location analysis unit 7 performs a performance degradation location analysis for the iteration / concentration location detection result 11 and outputs a performance degradation location detection result 8. Hereinafter, this process will be described in more detail.
[0106]
In the process of S-11-1, the analysis control unit 2 reads the source code name and the execution environment name from the input value 3. In the process of S-11-2, the analysis control unit 2 activates the performance deterioration point analysis unit 7 and passes the source code name and the execution environment name to the performance deterioration point analysis unit 7. In the process of S-11-3, the performance degradation portion analysis unit 7 reads an item that matches the execution environment name given from the performance degradation information 6 by execution environment.
[0107]
In the process of S-11-4, the performance degradation part analysis unit 7 reads the repeated / concentrated part detection result 11 specified by the source code name, and finds a part that matches the item read in the process of S-11-3. To detect. In the process of S-11-5, the performance degradation location analysis unit 7 outputs the location detected in the processing of S-11-4 and the identification information of the item to which the location is matched as the performance degradation location detection result 8. . With the above process, the process of S-11 is completed.
[0108]
(4): Detailed description of S-13
FIG. 11 is a detailed process flowchart (part 4), and FIG. 12 is a detailed process flowchart (part 5), showing the detailed process of S-13. In FIG. 11 and FIG. 12, S-13-1 to S-13-11 indicate each processing step. In the process of S-13, the performance prediction formula deriving unit 12 outputs the performance prediction formula 15 of the memory usage amount and the overhead of processing time. Hereinafter, this process will be described in more detail.
[0109]
In the process of S-13-1, the analysis control unit 2 checks whether the input value 3 is instructed to derive a prediction expression for the memory usage, and if the instruction to derive the prediction expression for the memory usage is instructed, S The process proceeds to the process -13-2, and if the instruction to derive the memory usage prediction formula is not given, the process proceeds to the process S-13-3.
[0110]
In the process of S-13-2, the performance prediction formula deriving unit 12 outputs a performance prediction calculation formula 15 for the memory usage of the analysis target source code 1. In the process of S-13-5, the performance prediction result display processing unit 18 displays the output performance prediction calculation formula 15.
[0111]
On the other hand, in the process of S-13-3, the analysis control unit 2 checks whether the input value 3 is instructed to derive a prediction equation for processing time overhead, and is instructed to derive a prediction equation for processing time overhead. If so, the process proceeds to S-13-4, and if the derivation of the performance prediction calculation formula 15 is not instructed, this process ends.
[0112]
In the process of S-13-4, the performance prediction formula deriving unit 12 outputs the performance prediction calculation formula 15 for the processing time overhead of the analysis target source code 1, and proceeds to the process of S-13-5. In the process of S-13-6, the result calculation unit 16 reads the performance prediction calculation formula 15.
[0113]
In the process of S-13-7, the result calculation unit 16 checks whether a variable remains in the performance prediction calculation formula 15, and if a variable remains in the performance prediction calculation formula 15, proceeds to the process of S-13-8. If there is no variable in the performance prediction calculation formula 15, the process proceeds to S-13-10.
[0114]
In the process of S-13-8, the result calculation unit 16 calculates the value calculated by substituting the value input by the operator for the variable portion of the performance prediction calculation formula 15, and outputs the performance prediction value 17. In the process of S-13-9, the performance prediction result display processing unit 18 displays the performance prediction value 17, and proceeds to the process of S-13-7.
[0115]
In the process of S-13-10, the analysis control unit 2 checks whether the display of the performance improvement method is instructed to the input value 3, and if the display of the performance improvement method is instructed to the input value 3, the S- When the process proceeds to the process 13-11 and the display of the performance improvement method is not instructed to the input value 3, this process is terminated.
[0116]
In the process of S-13-11, the analysis control unit 2 activates the improvement information display processing unit 5 and instructs the display of the improvement information for the performance prediction. The improvement information display processing unit 5 selects and displays the performance improvement information 4 for each execution environment for the performance prediction calculation formula 15. The process of S-13 is completed by the above process.
[0117]
(5): Detailed description of S-13-2
FIG. 13 is a detailed process flowchart (No. 6), and FIG. 14 is a detailed process flowchart (No. 7), showing the detailed process of S-13-2. In FIG. 13 and FIG. 14, S-13-2-1 to S-13-2-13 indicate processing steps. In the process of S-13-2, the performance prediction formula deriving unit 12 outputs a performance prediction calculation formula 15 for the memory usage of the analysis target source code 1. Hereinafter, this process will be described in more detail.
[0118]
In the process of S-13-2-1, the analysis control unit 2 reads the source code name, the process name, the execution environment name, and the registration instruction value from the input value 3. In the process of S-13-2-2, the analysis control unit 2 activates the performance prediction formula deriving unit 12, and passes the source code name, the process name, and the execution environment name to the performance prediction formula deriving unit 12.
[0119]
In the process of S-13-2-3, the performance prediction formula deriving unit 12 reads the analysis target source code 1 specified by the source code name, and secures the memory in the process specified by the process name. Detect the location. In the process of S-13-2-4, the performance prediction formula deriving unit 12 derives the performance prediction calculation formulas 15 for the number of locations where the memory is secured for each class or type.
[0120]
In the process of S-13-2-5, the performance prediction formula deriving unit 12 checks whether there is a process being called in the designated process, and the process being called in the designated process is If there is, the process proceeds to S-13-2-6, and if there is no calling process in the designated process, the process proceeds to S13-2-7.
[0121]
In the process of S-13-2-6, the performance prediction formula deriving unit 12 starts the process of S-13-2-3 for the calling process, and proceeds to the process of S-13-2-3. Transition. In the process of S-13-2-7, the performance prediction formula deriving unit 12 checks whether the registration instruction value is instructed to be registered in the performance prediction information 14 for each execution environment, and uses the performance instruction for each execution environment as the registration instruction value. If registration is instructed to the prediction information 14, the process proceeds to S-13-2-8. If registration is not instructed to the performance prediction information 14 by execution environment as a registration instruction value, S-13-2-11 is performed. Move on to processing.
[0122]
In the process of S-13-2-8, the performance prediction formula deriving unit 12 registers the performance prediction calculation formulas 15 for the number of places where the memory is reserved in the performance prediction information 14 for each execution environment for each process. , The performance prediction calculation formula 15 of the process indicated by the process name read in the process of S-13-2-1 (the original process of the call) is assembled and output by class or type.
[0123]
In the process of S-13-2-9, the performance prediction formula deriving unit 12 performs the performance measurement by execution environment for the memory usage of the class or type appearing in the performance prediction calculation formula 15 of the process of S-13-2-8. An item matching the execution environment name given from the information 13 is read.
[0124]
In the process of S-13-2-10, the performance prediction formula deriving unit 12 processes the memory usage performance prediction calculation formula 15 using the memory usage read in the process of S-13-2-9. While registering in the performance prediction information 14 for each execution environment every time, the performance prediction calculation formula 15 of the process (the original process of the call) indicated by the process name read in the process of S-13-2-1 is Or assemble and output by type.
[0125]
On the other hand, in the process of S-13-2-11, the performance prediction formula deriving unit 12 performs the performance of the process indicated by the process name read in the process of S-13-2-1 (the original process of the call). The prediction calculation formula 15 is assembled and output by class or type. In the process of S-13-2-12, the performance prediction formula deriving unit 12 performs the performance measurement by execution environment for the memory usage of the class or type appearing in the performance prediction calculation formula 15 of the process of S-13-2-8. An item matching the execution environment name given from the information 13 is read.
[0126]
In the process of S-13-2-13, the performance prediction formula deriving unit 12 uses the memory usage read in the process of S-13-2-9 to read in the process of S-13-2-9. Using the memory usage, the performance prediction calculation formula 15 of the process read in S-13-2-1 (the original process of the call) is assembled and output by class or type. With the above processing, the processing of S-13-2 is completed.
[0127]
(6): Detailed description of S-13-4
FIG. 15 is a detailed process flowchart (No. 8), and FIG. 16 is a detailed process flowchart (No. 9), which shows the detailed process of S-13-4. In FIGS. 15 and 16, S-13-4-1 to S-13-4-9 indicate processing steps. In the process of S-13-4, the performance prediction formula deriving unit 12 outputs the performance prediction calculation formula 15 for the processing time overhead of the source code 1 to be analyzed. Hereinafter, this process will be described in more detail.
[0128]
In the process of S-13-4-1, the analysis control unit 2 reads a source code name, a process name, an execution environment name, and a registration instruction value from the input value 3. In the process of S-13-4-2, the analysis control unit 2 activates the performance prediction formula deriving unit 12, and passes the source code name, the process name, and the execution environment name to the performance prediction formula deriving unit 12.
[0129]
In the process of S-13-4-3, the performance prediction formula deriving unit 12 reads the analysis target source code 1 designated by the source code name. In the process of S-13-4-4, the performance prediction formula deriving unit 12 reads the processing item corresponding to the given execution environment name for the processing time overhead from the performance measurement information 13 for each execution environment, and determines the processing time. The overhead performance prediction calculation formula 15 is derived.
[0130]
In the process of S-13-4-5, the performance prediction formula deriving unit 12 checks whether there is a process being called in the designated process, and if there is a process being called in the designated process. The process proceeds to S-13-4-6, and if there is no called process in the designated process, the process proceeds to S-13-4-7. In the process of S-13-4-6, the performance prediction formula deriving unit 12 starts the process of S-13-4-3 for the calling process, and proceeds to the process of S-13-4-3. Transition.
[0131]
In the process of S-13-4-7, the performance prediction formula deriving unit 12 checks whether the registration instruction value is instructed to be registered in the performance prediction information 14 for each execution environment, and performs the performance prediction for each execution environment in the registration instruction value. If registration to the information 14 is instructed, the process proceeds to S-13-4-8, and if registration to the execution environment performance prediction information 14 is not instructed in the registration instruction value, S-13--8 is performed. The process proceeds to 4-9.
[0132]
In the process of S-13-4-8, the performance prediction formula deriving unit 12 registers the performance prediction calculation formula 15 for the execution time overhead in the performance prediction information 14 for each execution environment for each process. Assemble and output the performance prediction calculation formula 15 for the process indicated by the process name read in the process 4-1 (the original process of the call).
[0133]
In the process of S-13-4-9, the performance prediction formula deriving unit 12 determines the execution time of the process (the original process of the call) indicated by the process name read in the process of S-13-4-1. The overhead performance prediction calculation formula 15 is assembled and output. With the above processing, the processing of S-13-4 is completed.
[0134]
The supplementary explanation of S-13-2-8, S-13-2-10, and S-13-4-8 will be described below based on the supplementary explanation shown in FIG. The performance prediction formula deriving unit 12 creates the performance prediction calculation formula 15 in the order of process D → process C → process B → process A when the processes are called in a chain as shown in the figure, and the performance by performance environment Register in the prediction information 14.
[0135]
At this time, the calculation formula of the process C is the calculation formula of the process D + the calculation formula of the process C itself, and the calculation formula of the process A is the calculation formula of the process B + the calculation formula of the process D + the calculation formula of the process A itself. Thus, the calculation formula has a hierarchical structure. The output of the entire process of S-13-2 and S-13-4 is the performance prediction calculation formula 15 of process A, which is the source of the call.
[0136]
§4: Explanation of each piece of information
Hereafter, each said information etc. are demonstrated.
[0137]
(1): Explanation of examples of input values
FIG. 17 is an example of input values. The input value 3 is, for example, as shown in FIG. In this example, the input value 3 is 1. Process selection value, 2. 2. Analysis location selection value, 3. Iteration / concentration location analysis selection value, 4. Performance prediction selection value, 5. Improvement method display selection value, 6. Source code name Process name, 8. 8. Execution environment name Repeat multiplicity, 10. 10. Concentration level There are registration instruction values, and there are respective contents corresponding to the respective items.
[0138]
For example: In the processing selection value item, “performance degradation analysis” or “performance prediction” is set. 5). In the item of improvement method display selection value, the improvement method is “display” or “not display”. 11. In the item of the registration instruction value, “register” or “not register” is set in the performance prediction information for each execution environment.
[0139]
(2): Explanation of performance degradation information example by execution environment
FIG. 18 is an example of performance degradation information by execution environment, FIG. 18A is an example of the configuration of performance degradation information by execution environment, and FIG. The performance degradation information for each execution environment shown in FIG. 18A is auxiliary information for efficiently detecting the pattern type and application range. In the performance degradation information by execution environment shown in FIG. 18B, “all” in the table indicates “whole” and “L” indicates “high impact”.
[0140]
In the performance degradation information example by execution environment, the execution environment name, item identification name, performance degradation pattern, pattern type, application range, overall / repetition / concentration location only, overhead of execution time, magnitude of influence on execution performance, etc. There are items. Then, when information is stored in each item, it becomes as shown in FIG. 18B.
[0141]
In the example of FIG. 18B, for example, execution environment name = JRE1-1-8-Sun, item identification name = 00001, performance degradation pattern = readLine, pattern identification = method, application range 1 = java.io, application range 2 = DataInput Stream, total / repetition / concentrated points only = all, execution time overhead = 100, and influence on execution performance = L.
[0142]
(3): Explanation of performance improvement information by execution environment
FIG. 19 shows an example of performance improvement information by execution environment, FIG. 19A shows an example of the configuration of performance improvement information by execution environment, and FIG. 19B shows an example of realization of performance improvement information by execution environment. In the example of the performance improvement information by execution environment, items such as an execution environment name, an item identification name, and a performance deterioration information storage location address are provided. Then, when information is stored in each of these items, it becomes as shown in FIG. 19B.
[0143]
(4): Explanation of performance measurement information example by execution environment
FIG. 20 shows an example of performance measurement information by execution environment, FIG. 20A shows an example of the configuration of performance measurement information by execution environment, and FIG. 20B shows an example of realization of performance measurement information by execution environment. In the example of the performance measurement information by execution environment, items such as an execution environment name, item identification name, pattern, pattern type, application range, memory usage, execution time overhead, and the like are provided. Then, when information is stored in each of these items, it becomes as shown in FIG. 20B.
[0144]
In the example of FIG. 20B, for example, execution environment name = JRE1-1-8-Sun, item identification name = 00101, performance degradation pattern = String (), pattern identification = constructor, application range 1 = java.lang, Applicable range 2 = String, memory usage = 58, execution time overhead = 50.
[0145]
(5): Explanation of performance prediction information by chained call / execution environment
FIG. 21 is an example of the configuration of performance prediction information for each call / execution environment, FIG. 21A is an example of a chain call, and FIG. B is an example of the configuration of performance prediction information for each execution environment. In the chain call, as shown in FIG. 21A, process A calls process B in a loop that repeats i times, and process C calls process D in a loop that repeats j times. To do.
[0146]
Further, in the example of the configuration of the performance prediction information by execution environment shown in FIG. 21B, the execution environment name, item identification name, process name, application range, number of reserved memory areas, memory usage, execution time overhead Each item is set. In FIG. 21B, the pattern type and application range are auxiliary information for efficiently performing detection.
[0147]
(6): Explanation of examples of performance prediction information by execution environment for chained calls
FIG. 22 is an example of performance prediction information for each execution environment for chained calls.
In this example, the execution environment name, item identification name, process name, application range 1, 2, number of reserved memory areas, memory usage, execution time overhead are shown as examples of performance prediction information for each execution environment for chained calls. Each item is set, and each item has information as shown in the figure.
[0148]
(7): Explanation of performance prediction formula for process A with chained calls
FIG. 23 is a diagram showing a performance prediction calculation formula for process A having chained calls. In this example, the performance prediction calculation formula for each item of the number of reserved memory areas of the process A, the memory usage amount of the process A, and the overhead of the execution time of the process A is shown.
[0149]
(8): Explanation of predicted performance value for process A having chained calls
FIG. 24 is a diagram showing performance prediction values for process A having chained calls. In this example, the predicted performance values for each item of the number of reserved areas of the process A, the memory usage of the process A, and the overhead of the execution time of the process A are shown.
[0150]
§5: Description of specific device examples and recording media
FIG. 25 shows a specific apparatus example. The object-oriented program performance improvement support apparatus can be realized by an arbitrary computer such as a personal computer or a workstation. This apparatus includes a computer main body 21, a display device 22 connected to the computer main body 21, an input device (keyboard / mouse, etc.) 23, a removable disk drive (referred to as “RDD”) 24, and a hard disk device (referred to as “HDD”). 25 or the like.
[0151]
The computer main body 21 includes a CPU 26 for performing various internal controls and processes, a ROM 27 (nonvolatile memory) for storing programs and various data, a memory 28, and an interface control unit (“I / F”). 29) and a communication control unit 30 are provided. The removable disk drive 24 includes a flexible disk drive and an optical disk drive.
[0152]
In the apparatus having the above configuration, for example, a program for realizing the processing of the object-oriented program performance improvement support apparatus is stored in the ROM 27 or the disk (recording medium) of the hard disk apparatus 25, and the CPU 26 stores the program. The processing is executed by reading and executing.
[0153]
However, the present invention is not limited to such an example. For example, the program may be stored in the disk of the hard disk device 25 as follows, and the CPU 26 may execute the process by executing the program. .
[0154]
(1): A program stored in a removable disk created by another device (program data created by another device) is read by the removable disk drive 24 and stored in a disk (recording medium) of the hard disk device 25. .
[0155]
{Circle around (2)}: Data such as a program transmitted from another device via a LAN or other communication line is received via the communication control unit 30, and the data is stored in the disk of the hard disk device 25.
[0156]
(Appendix)
(Supplementary Note 1): Class names, processing names, and processing patterns that may degrade the execution performance of object-oriented programs are stored in advance as performance degradation information for each execution environment, and this is used as performance degradation information for each execution environment. And an object-oriented program performance improvement support device characterized by comprising processing means for statically analyzing the source code of an object-oriented program and displaying a portion in the source code that may degrade execution performance .
[0157]
(Appendix 2): Analyzing the source code of an object-oriented program statically, how many locations are reserved memory in the specified processing, the number of performance in a specific execution environment for each class or type A prediction calculation formula is derived, and a performance prediction calculation formula for the memory usage in a specific execution environment is derived using the memory usage information for each class or type registered in advance in the performance measurement information for each execution environment. When there is an instruction by the first processing means and the input value, the second processing means for registering the derived performance prediction calculation formula in the performance prediction information for each execution environment and the variable part of the performance prediction calculation formula correspond to each other. A third processing means for displaying the location of the source code to be input and allowing the user to interactively input; a fourth processing means for obtaining a performance prediction value by substituting the value input by the user into the performance prediction calculation formula; The Object-oriented program performance improvement support apparatus characterized by that example.
[0158]
(Supplementary note 3): Using the performance measurement information registered in advance for each execution environment, the source code of the object-oriented program is statically analyzed, and the processing time overhead performance in the specific execution environment for the specified processing A first processing means for deriving a prediction calculation formula; a second processing means for registering the derived performance prediction calculation formula in the performance prediction information for each execution environment when an instruction is given by an input value; and a performance prediction calculation formula In the conversion part, the corresponding source code portion is displayed, and the third processing means that allows the user to input interactively and the value input by the user are substituted into the performance prediction calculation formula to obtain the performance prediction value An object-oriented program performance improvement support apparatus, comprising: a fourth processing means.
[0159]
(Supplementary Note 4): Class names, processing names, and processing patterns that may degrade the execution performance of the object-oriented program are stored in advance as performance degradation information for each execution environment in the computer. By using as a program for statically analyzing the source code of an object-oriented program and realizing the function of a processing means for displaying a portion in the source code where execution performance may be degraded, or the program A recorded computer-readable recording medium.
[0160]
【The invention's effect】
As described above, the present invention has the following effects.
[0161]
(1): In claim 1, the processing means accumulates in advance as performance degradation information for each execution environment a class name, a processing name, and a processing pattern that may degrade the execution performance of the object-oriented program. By using it as performance degradation information for each execution environment, the source code of the object-oriented program is statically analyzed, and a portion in the source code where the execution performance may be degraded is displayed.
[0162]
In this case, in the prior art, the execution performance deterioration portion cannot be detected unless the entire source code is in a complete executable form. On the other hand, in the apparatus of the present invention, it is possible to analyze a part of the source code and detect a portion that may deteriorate the execution performance. Therefore, problems relating to execution performance can be found at an earlier stage of development than in the prior art.
[0163]
Also, the performance degradation information for each execution environment is not created in the performance degradation location analysis unit, but is stored as data that can be added or modified from the outside. Therefore, for example, since the user can add and modify performance degradation information for each execution environment according to his / her project, analysis according to the user's execution environment and design policy becomes possible.
[0164]
(2): In claim 2, the first processing means analyzes the source code of the object-oriented program statically, and determines how many places the memory is secured in the specified processing, the class or Deriving the number of performance prediction formulas for a specific execution environment for each type, and using the memory usage information for each class or type registered in advance in the performance measurement information for each execution environment, Deriving a formula for predicting the performance of memory usage.
[0165]
When instructed by the input value, the second processing means registers the derived performance prediction calculation formula in the performance prediction information for each execution environment. The third processing means displays the location of the corresponding source code in the variable part of the performance prediction calculation formula, and allows the user to interactively input it. The fourth processing means obtains a performance predicted value by substituting the value input by the user into the performance prediction calculation formula.
[0166]
In this case, in an object-oriented program, a performance problem often occurs because an object (an instance of a class) or an array presses a memory. However, the prior art cannot predict in advance only by actually measuring the number of objects and arrays generated and the memory usage after the entire source code is completed and becomes executable.
[0167]
In the apparatus of the present invention, the source code is analyzed, and a prediction expression for the number of instances of the class and the number of arrays generated when a certain method is called is created. In addition, the memory usage amount is predicted by using information measured in advance for each execution environment for each class instance and array (performance measurement information for each execution environment). The part that cannot be understood only by analyzing the source code can be solved by interacting with the user.
[0168]
In addition, since the prediction formula created for each process (method and constructor) can be registered and reused in the performance prediction information for each execution environment, it is not necessary to recalculate the prediction formula for the same process. Processing can be made more efficient.
[0169]
(3): In claim 3, the class name, processing name, and processing pattern that may degrade the execution performance of the object-oriented program by the computer reading and executing the program on the recording medium are provided for each execution environment. Procedures that are stored in advance as degradation information, and using this as performance degradation information for each execution environment, the source code of an object-oriented program is statically analyzed, and locations that may degrade execution performance in the source code Perform the steps to display.
[0170]
In this case, in the prior art, the execution performance deterioration portion cannot be detected unless the entire source code is in a complete executable form. On the other hand, in the apparatus of the present invention, it is possible to analyze a part of the source code and detect a portion that may deteriorate the execution performance. Therefore, problems relating to execution performance can be found at an earlier stage of development than in the prior art.
[0171]
Also, the performance degradation information for each execution environment is not created in the performance degradation location analysis unit, but is stored as data that can be added or modified from the outside. Therefore, for example, since the user can add and modify performance degradation information for each execution environment according to his / her project, analysis according to the user's execution environment and design policy becomes possible.
[0172]
(4): In Appendix 3, the first processing means statically analyzes the source code of the object-oriented program using the performance measurement information classified by execution environment registered in advance, and specifies the specified processing. The performance prediction formula for the processing time overhead in the execution environment is derived. When instructed by the input value, the second processing means registers the derived performance prediction calculation formula in the performance prediction information for each execution environment.
[0173]
The third processing means displays the location of the corresponding source code in the conversion part of the performance prediction calculation formula, and allows the user to input interactively. The fourth processing means obtains a performance predicted value by substituting the value input by the user into the performance prediction calculation formula.
[0174]
In this case, in the prior art, the entire source code is completed and after it becomes an executable form, it is only possible to actually measure the time required to execute the method, and a prior prediction cannot be performed. In the apparatus of the present invention, the source code is analyzed, and a prediction formula for processing time overhead is created for each process (method or constructor).
[0175]
In creating the formula, information measured in advance for each execution environment with respect to basic processing overhead (performance measured performance information for each execution environment) is used. In this way, a part that cannot be understood only by analyzing the source code can be set as an expression variable and solved while interacting with the user.
[Brief description of the drawings]
FIG. 1 is a diagram illustrating the principle of the present invention.
FIG. 2 is an explanatory diagram (part 1) of an apparatus according to an embodiment of the present invention.
FIG. 3 is an explanatory diagram (part 2) of the device according to the embodiment of the present invention.
FIG. 4 is an explanatory diagram (No. 3) of the device according to the embodiment of the present invention.
FIG. 5 is a process flowchart (part 1) of the entire apparatus according to the embodiment of the present invention.
FIG. 6 is a process flowchart (part 2) of the entire apparatus according to the embodiment of the present invention.
FIG. 7 is a detailed process flowchart (part 1) according to the embodiment of the present invention;
FIG. 8 is a detailed process flowchart (2) according to the embodiment of the present invention;
FIG. 9 is an explanatory diagram of detailed processing according to the embodiment of the present invention.
FIG. 10 is a detailed process flowchart (part 3) according to the embodiment of the present invention;
FIG. 11 is a detailed process flowchart (4) according to the embodiment of the present invention;
FIG. 12 is a detailed process flowchart (part 5) according to the embodiment of the present invention;
FIG. 13 is a detailed process flowchart (6) according to the embodiment of the present invention;
FIG. 14 is a detailed process flowchart (7) according to the embodiment of the present invention;
FIG. 15 is a detailed process flowchart (8) according to the embodiment of the present invention;
FIG. 16 is a detailed process flowchart (9) according to the embodiment of the present invention;
FIG. 17 is an example of an input value in the embodiment of the present invention.
18 is an example of performance degradation information by execution environment according to the embodiment of the present invention, FIG. A is an example of the configuration of performance degradation information by execution environment, and FIG. B is an implementation example of performance degradation information by execution environment.
FIG. 19 is an example of performance improvement information for each execution environment in the embodiment of the present invention, FIG. A is an example of the configuration of performance improvement information for each execution environment, and FIG.
20 is an example of performance measurement information by execution environment according to the embodiment of the present invention, FIG. A is an example of the configuration of performance measurement information by execution environment, and FIG. B is an implementation example of performance measurement information by execution environment.
FIGS. 21A and 21B are examples of the configuration of performance prediction information for each call / execution environment according to the embodiment of the present invention, FIG. 21A is an example of a chain call, and FIG. It is an example.
FIG. 22 is an example of performance prediction information by execution environment for chained calls in the embodiment of the present invention.
FIG. 23 is a diagram showing a performance prediction calculation formula for process A having chained calls in the embodiment of the present invention.
FIG. 24 is a diagram showing a predicted performance value for process A having chained calls in the embodiment of the present invention.
FIG. 25 is a specific apparatus example according to the embodiment of the present invention.
[Explanation of symbols]
1 Source code for analysis
2 Analysis control unit
3 Input values
4 Performance improvement information by execution environment
5 Improvement information display processing section
6 Performance degradation information by execution environment
7 Performance degradation point analysis part
8 Performance degradation point detection results
9 Performance degradation point display processing section
10 Repetition / concentration point detector
11 Repeat / concentration detection results
12 Performance prediction formula deriving section
13 Performance measurement information by execution environment
14 Performance prediction information by execution environment
15 Performance prediction formula
16 Result calculation part
17 Performance prediction value
18 Performance prediction result display processing unit
21 Computer body
22 Display device
23 Input device
24 Removable disk drive (RDD)
25 Hard Disk Drive (HDD)
26 CPU
27 ROM
28 memory
29 Interface control unit (I / F control unit)
30 Communication control unit

Claims (3)

オブジェクト指向プログラムのソースコードを解析し、性能劣化の可能性のある箇所を検出する性能劣化解析部と、
性能の予測を行う性能予測部と、
前記性能劣化解析部及び性能予測部に共通の共通部とを有し、
前記性能劣化解析部には、
オブジェクト指向プログラムの実行性能を劣化させる可能性のある箇所を、予め実行環境毎に性能劣化情報として蓄積した実行環境別性能劣化情報記憶手段と、性能劣化箇所の解析処理を行う性能劣化箇所解析部と、性能劣化箇所の検出情報をディスプレイ装置の画面に表示する性能劣化箇所表示処理部とを少なくとも備え、
前記共通部には、解析対象のオブジェクト指向プログラムのソースコードを記憶したソースコード記憶手段と、外部からの入力値を基に、前記性能劣化箇所解析部に対して解析制御を行う解析制御手段を少なくとも備えたオブジェクト指向プログラム性能改善支援装置であって、
前記性能劣化箇所解析部は、前記解析制御手段の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析して、前記実行環境別性能劣化情報記憶手段の性能劣化情報が含まれる箇所を、実行性能を劣化させる可能性のある箇所として検出する機能を有し、
前記性能劣化箇所表示処理部は、前記性能劣化箇所解析部が検出した結果の情報をディスプレイ装置の画面に表示する機能を有すると共に、
前記性能予測部には、
実行環境別性能実測情報を予め登録しておく実行環境別性能実測情報登録手段と、実行環境別性能予測情報を予め登録しておく実行環境別性能予測情報登録手段と、性能予測式の導出処理を行う性能予測式導出部と、結果計算部と、性能予測結果の情報をディスプレイ装置の画面に表示する処理を行う性能予測結果表示処理部とを少なくとも備え、
前記性能予測式導出部は、前記解析制御部の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析し、指定された処理中で、或るメソッドが呼ばれた際に生成されるクラスのインスタンス又は配列の数の性能予測式を導出し、併せて、前記実行環境別性能実測情報登録手段に予め登録されているクラス毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する機能を有すると共に、
外部からの入力値によって指示があった場合、前記導出された性能予測式を、前記実行環境別性能予測情報登録手段に登録する機能を有し、
前記結果計算部は、ユーザが入力した値を前記性能予測計算式に代入して性能予測値を得る機能を有し、
前記性能予測結果表示処理部は、前記性能予測計算式の変数部分に対応する前記ソースコードの箇所をディスプレイ装置の画面に表示する機能を有し、
前記結果計算部は、前記表示された情報を基にユーザが入力した値を、前記性能予測式導出部が導出した性能予測式に代入して性能予測値を得る機能を有することを特徴とするオブジェクト指向プログラム性能改善支援装置。
A performance degradation analysis unit that analyzes the source code of an object-oriented program and detects possible performance degradations;
A performance prediction unit for predicting performance;
A common part common to the performance deterioration analysis part and the performance prediction part,
In the performance degradation analysis unit,
Performance degradation information storage means for each execution environment that stores performance degradation information for each execution environment in advance, and a performance degradation location analysis unit that performs performance degradation analysis processing. And a performance degradation location display processing unit that displays detection information of the performance degradation location on the screen of the display device,
The common unit includes a source code storage unit that stores a source code of an object-oriented program to be analyzed, and an analysis control unit that performs analysis control on the performance degradation point analysis unit based on an input value from the outside. At least an object-oriented program performance improvement support device provided,
The performance degradation part analysis unit takes in the source code of the analysis target source code storage means under the control of the analysis control means, and performs static analysis without operating the source code, and the performance degradation by execution environment It has a function of detecting a location including performance degradation information of the information storage means as a location that may degrade the execution performance,
The performance degradation point display processing unit has a function of displaying information on a result detected by the performance degradation point analysis unit on a screen of a display device,
In the performance prediction unit,
Execution environment-specific performance measurement information registration means for pre-registering execution environment-specific performance measurement information, execution environment-specific performance prediction information registration means for pre-registering execution environment-specific performance prediction information, and performance prediction formula derivation processing At least a performance prediction formula deriving unit, a result calculation unit, and a performance prediction result display processing unit that performs processing for displaying performance prediction result information on the screen of the display device,
The performance prediction formula deriving unit takes in the source code of the analysis target source code storage unit under the control of the analysis control unit, performs static analysis without operating the source code, and is in a specified process, Deriving a performance prediction formula for the number of instances or arrays of classes generated when a certain method is called, and using the memory for each class registered in advance in the performance measurement information registration means for each execution environment Using the amount information, it has a function to derive a performance prediction calculation formula for memory usage in a specific execution environment,
When there is an instruction by an external input value, the derived performance prediction formula has a function of registering in the execution environment performance prediction information registration means,
The result calculation unit has a function of obtaining a performance prediction value by substituting a value input by a user into the performance prediction calculation formula,
The performance prediction result display processing unit has a function of displaying a location of the source code corresponding to a variable part of the performance prediction calculation formula on a screen of a display device,
The result calculation unit has a function of obtaining a performance predicted value by substituting a value input by a user based on the displayed information into a performance prediction formula derived by the performance prediction formula deriving unit. An object-oriented program performance improvement support device.
オブジェクト指向プログラムのソースコードを解析し、性能劣化の可能性のある箇所を検出する性能劣化解析部と、
性能の予測を行う性能予測部と、
前記性能劣化解析部及び性能予測部に共通の共通部とを有し、
前記性能劣化解析部には、
オブジェクト指向プログラムの実行性能を劣化させる可能性のある箇所を、予め実行環境毎に性能劣化情報として蓄積した実行環境別性能劣化情報記憶手段と、性能劣化箇所の解析処理を行う性能劣化箇所解析部と、性能劣化箇所の検出情報をディスプレイ装置の画面に表示する性能劣化箇所表示処理部とを少なくとも備え、
前記共通部には、解析対象のオブジェクト指向プログラムのソースコードを記憶したソースコード記憶手段と、外部からの入力値を基に、前記性能劣化箇所解析部に対して解析制御を行う解析制御手段を少なくとも備えたオブジェクト指向プログラム性能改善支援装置に、
前記性能劣化箇所解析部は、前記解析制御手段の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析して、前記実行環境別性能劣化情報記憶手段の性能劣化情報が含まれる箇所を、実行性能を劣化させる可能性のある箇所として検出する機能を有し、
前記性能劣化箇所表示処理部は、前記性能劣化箇所解析部が検出した結果の情報をディスプレイ装置の画面に表示する機能を有すると共に、
前記性能予測部には、
実行環境別性能実測情報を予め登録しておく実行環境別性能実測情報登録手段と、実行環境別性能予測情報を予め登録しておく実行環境別性能予測情報登録手段と、性能予測式の導出処理を行う性能予測式導出部と、結果計算部と、性能予測結果の情報をディスプレイ装置の画面に表示する処理を行う性能予測結果表示処理部とを少なくとも備え、
前記性能予測式導出部は、前記解析制御部の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析し、指定された処理中で、或るメソッドが呼ばれた際に生成されるクラスのインスタンス又は配列の数の性能予測式を導出し、併せて、前記実行環境別性能実測情報登録手段に予め登録されているクラス毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する機能を有すると共に、
外部からの入力値によって指示があった場合、前記導出された性能予測式を、前記実行環境別性能予測情報登録手段に登録する機能を有し、
前記結果計算部は、ユーザが入力した値を前記性能予測計算式に代入して性能予測値を得る機能を有し、
前記性能予測結果表示処理部は、前記性能予測計算式の変数部分に対応する前記ソースコードの箇所をディスプレイ装置の画面に表示する機能を有し、
前記結果計算部は、前記表示された情報を基にユーザが入力した値を、前記性能予測式導出部が導出した性能予測式に代入して性能予測値を得る機能を有するという前記各部の機能を実現させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体。
A performance degradation analysis unit that analyzes the source code of an object-oriented program and detects possible performance degradations;
A performance prediction unit for predicting performance;
A common part common to the performance deterioration analysis part and the performance prediction part,
In the performance degradation analysis unit,
Performance degradation information storage means for each execution environment that stores performance degradation information for each execution environment in advance, and a performance degradation location analysis unit that performs performance degradation analysis processing. And a performance degradation location display processing unit that displays detection information of the performance degradation location on the screen of the display device,
The common unit includes a source code storage unit that stores a source code of an object-oriented program to be analyzed, and an analysis control unit that performs analysis control on the performance degradation point analysis unit based on an input value from the outside. At least the object-oriented program performance improvement support device provided,
The performance degradation part analysis unit takes in the source code of the analysis target source code storage means under the control of the analysis control means, and performs static analysis without operating the source code, and the performance degradation by execution environment It has a function of detecting a location including performance degradation information of the information storage means as a location that may degrade the execution performance,
The performance degradation point display processing unit has a function of displaying information on a result detected by the performance degradation point analysis unit on a screen of a display device,
In the performance prediction unit,
Execution environment-specific performance measurement information registration means for pre-registering execution environment-specific performance measurement information, execution environment-specific performance prediction information registration means for pre-registering execution environment-specific performance prediction information, and performance prediction formula derivation processing At least a performance prediction formula deriving unit, a result calculation unit, and a performance prediction result display processing unit that performs processing for displaying performance prediction result information on the screen of the display device,
The performance prediction formula deriving unit takes in the source code of the analysis target source code storage unit under the control of the analysis control unit, performs static analysis without operating the source code, and is in a specified process, Deriving a performance prediction formula for the number of instances or arrays of classes generated when a certain method is called, and using the memory for each class registered in advance in the performance measurement information registration means for each execution environment Using the amount information, it has a function to derive a performance prediction calculation formula for memory usage in a specific execution environment,
When there is an instruction by an external input value, the derived performance prediction formula has a function of registering in the execution environment performance prediction information registration means,
The result calculation unit has a function of obtaining a performance prediction value by substituting a value input by a user into the performance prediction calculation formula,
The performance prediction result display processing unit has a function of displaying a location of the source code corresponding to a variable part of the performance prediction calculation formula on a screen of a display device,
The result calculation unit has a function of obtaining a performance predicted value by substituting a value input by a user based on the displayed information into a performance prediction formula derived by the performance prediction formula deriving unit. A computer-readable recording medium storing a program for realizing the above.
オブジェクト指向プログラムのソースコードを解析し、性能劣化の可能性のある箇所を検出する性能劣化解析部と、
性能の予測を行う性能予測部と、
前記性能劣化解析部及び性能予測部に共通の共通部とを有し、
前記性能劣化解析部には、
オブジェクト指向プログラムの実行性能を劣化させる可能性のある箇所を、予め実行環境毎に性能劣化情報として蓄積した実行環境別性能劣化情報記憶手段と、性能劣化箇所の解析処理を行う性能劣化箇所解析部と、性能劣化箇所の検出情報をディスプレイ装置の画面に表示する性能劣化箇所表示処理部とを少なくとも備え、
前記共通部には、解析対象のオブジェクト指向プログラムのソースコードを記憶したソースコード記憶手段と、外部からの入力値を基に、前記性能劣化箇所解析部に対して解析制御を行う解析制御手段を少なくとも備えたオブジェクト指向プログラム性能改善支援装置に、
前記性能劣化箇所解析部は、前記解析制御手段の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析して、前記実行環境別性能劣化情報記憶手段の性能劣化情報が含まれる箇所を、実行性能を劣化させる可能性のある箇所として検出する機能を有し、
前記性能劣化箇所表示処理部は、前記性能劣化箇所解析部が検出した結果の情報をディスプレイ装置の画面に表示する機能を有すると共に、
前記性能予測部には、
実行環境別性能実測情報を予め登録しておく実行環境別性能実測情報登録手段と、実行環境別性能予測情報を予め登録しておく実行環境別性能予測情報登録手段と、性能予測式の導出処理を行う性能予測式導出部と、結果計算部と、性能予測結果の情報をディスプレイ装置の画面に表示する処理を行う性能予測結果表示処理部とを少なくとも備え、
前記性能予測式導出部は、前記解析制御部の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析し、指定された処理中で、或るメソッドが呼ばれた際に生成されるクラスのインスタンス又は配列の数の性能予測式を導出し、併せて、前記実行環境別性能実測情報登録手段に予め登録されているクラス毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する機能を有すると共に、
外部からの入力値によって指示があった場合、前記導出された性能予測式を、前記実行環境別性能予測情報登録手段に登録する機能を有し、
前記結果計算部は、ユーザが入力した値を前記性能予測計算式に代入して性能予測値を得る機能を有し、
前記性能予測結果表示処理部は、前記性能予測計算式の変数部分に対応する前記ソースコードの箇所をディスプレイ装置の画面に表示する機能を有し、
前記結果計算部は、前記表示された情報を基にユーザが入力した値を、前記性能予測式導出部が導出した性能予測式に代入して性能予測値を得る機能を有するという前記各部の機能を実現させるためのプログラム。
A performance degradation analysis unit that analyzes the source code of an object-oriented program and detects possible performance degradations;
A performance prediction unit for predicting performance;
A common part common to the performance deterioration analysis part and the performance prediction part,
In the performance degradation analysis unit,
Performance degradation information storage means for each execution environment that stores performance degradation information for each execution environment in advance, and a performance degradation location analysis unit that performs performance degradation analysis processing. And a performance degradation location display processing unit that displays detection information of the performance degradation location on the screen of the display device,
The common unit includes a source code storage unit that stores a source code of an object-oriented program to be analyzed, and an analysis control unit that performs analysis control on the performance degradation point analysis unit based on an input value from the outside. At least the object-oriented program performance improvement support device provided,
The performance degradation part analysis unit takes in the source code of the analysis target source code storage means under the control of the analysis control means, and performs static analysis without operating the source code, and the performance degradation by execution environment It has a function of detecting a location including performance degradation information of the information storage means as a location that may degrade the execution performance,
The performance degradation point display processing unit has a function of displaying information on a result detected by the performance degradation point analysis unit on a screen of a display device,
In the performance prediction unit,
Execution environment-specific performance measurement information registration means for pre-registering execution environment-specific performance measurement information, execution environment-specific performance prediction information registration means for pre-registering execution environment-specific performance prediction information, and performance prediction formula derivation processing At least a performance prediction formula deriving unit, a result calculation unit, and a performance prediction result display processing unit that performs processing for displaying performance prediction result information on the screen of the display device,
The performance prediction formula deriving unit takes in the source code of the analysis target source code storage unit under the control of the analysis control unit, performs static analysis without operating the source code, and is in a specified process, Deriving a performance prediction formula for the number of instances or arrays of classes generated when a certain method is called, and using the memory for each class registered in advance in the performance measurement information registration means for each execution environment Using the amount information, it has a function to derive a performance prediction calculation formula for memory usage in a specific execution environment,
When there is an instruction by an external input value, the derived performance prediction formula has a function of registering in the execution environment performance prediction information registration means,
The result calculation unit has a function of obtaining a performance prediction value by substituting a value input by a user into the performance prediction calculation formula,
The performance prediction result display processing unit has a function of displaying a location of the source code corresponding to a variable part of the performance prediction calculation formula on a screen of a display device,
The result calculation unit has a function of obtaining a performance predicted value by substituting a value input by a user based on the displayed information into a performance prediction formula derived by the performance prediction formula deriving unit. A program to realize
JP2001168933A 2000-06-12 2001-06-05 Object-oriented program performance improvement support device, recording medium, and program Expired - Fee Related JP3961787B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001168933A JP3961787B2 (en) 2000-06-12 2001-06-05 Object-oriented program performance improvement support device, recording medium, and program

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2000-174983 2000-06-12
JP2000174983 2000-06-12
JP2001168933A JP3961787B2 (en) 2000-06-12 2001-06-05 Object-oriented program performance improvement support device, recording medium, and program

Publications (2)

Publication Number Publication Date
JP2002073369A JP2002073369A (en) 2002-03-12
JP3961787B2 true JP3961787B2 (en) 2007-08-22

Family

ID=26593722

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001168933A Expired - Fee Related JP3961787B2 (en) 2000-06-12 2001-06-05 Object-oriented program performance improvement support device, recording medium, and program

Country Status (1)

Country Link
JP (1) JP3961787B2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4914609B2 (en) * 2005-12-28 2012-04-11 富士通株式会社 Source code problem prediction program
KR100767273B1 (en) * 2006-09-12 2007-10-17 박란 Warning apparatus for the danger of bus
WO2008038389A1 (en) 2006-09-28 2008-04-03 Fujitsu Limited Program performance analyzing apparatus
JP5240220B2 (en) * 2010-03-04 2013-07-17 日本電気株式会社 Software effective performance evaluation system, software effective performance evaluation method, and program

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04101241A (en) * 1990-08-20 1992-04-02 N T T Data Tsushin Kk Computer performance evaluating device
JP2740352B2 (en) * 1990-11-29 1998-04-15 富士通テン株式会社 Program analyzer
JPH07152578A (en) * 1993-11-29 1995-06-16 Fuji Facom Corp Detection of maximum stack usage quantity
JPH07271572A (en) * 1994-03-30 1995-10-20 Hitachi Software Eng Co Ltd Method for generating dynamic step number calculating formula
JPH0869380A (en) * 1994-08-29 1996-03-12 Fujitsu Ltd Source program check device
JPH11219289A (en) * 1998-02-02 1999-08-10 Fujitsu Ltd Object-oriented program quality evaluation device
JP2000122895A (en) * 1998-10-20 2000-04-28 Matsushita Electric Ind Co Ltd Method and device for analyzing stack size
JP2000132387A (en) * 1998-10-22 2000-05-12 Fujitsu Ltd Object directing program generation support device

Also Published As

Publication number Publication date
JP2002073369A (en) 2002-03-12

Similar Documents

Publication Publication Date Title
Ball et al. Efficient path profiling
US7386838B2 (en) Method and apparatus for obtaining profile data for use in optimizing computer programming code
Creusillet et al. Interprocedural array region analyses
JP3707727B2 (en) Program optimization method and compiler using the same
US7178132B2 (en) Forward walking through binary code to determine offsets for stack walking
US6148437A (en) System and method for jump-evaluated trace designation
JP4105264B2 (en) compiler
US7337301B2 (en) Designing configurable processor with hardware extension for instruction extension to replace searched slow block of instructions
Leopoldseder et al. Dominance-based duplication simulation (DBDS): code duplication to enable compiler optimizations
US20050246699A1 (en) System and method for iterative code optimization using adaptive size metrics
JP2002116916A (en) Method for optimizing program and compiler using the same
Ball et al. Using paths to measure, explain, and enhance program behavior
JP3924256B2 (en) COMPILER DEVICE, COMPILER PROGRAM, RECORDING MEDIUM, COMPILING METHOD, RUNTIME INFORMATION GENERATION DEVICE, AND RUNTIME INFORMATION GENERATION PROGRAM
JP3961787B2 (en) Object-oriented program performance improvement support device, recording medium, and program
JP3237693B2 (en) Language processing apparatus and language processing method
Plangger et al. Vectorization in pypy's tracing just-in-time compiler
Mendes et al. Automatic performance prediction and scalability analysis for data parallel programs
US20140173572A1 (en) Constraint derivation in context following for use with object code insertion
JP3910831B2 (en) Program development support device, recording medium, and program
Chan et al. A program slicing system for Object-Oriented programs
JP3758991B2 (en) Method for adjusting the number of execution steps of a target program, adjusting device therefor, and recording medium storing the program
Dragos Optimizing Higher-Order Functions in Scala
JP2003131888A (en) Method of scheduling instruction between procedures
Leopoldseder et al. Dominance-Based Duplication Simulation (DBDS)
JP3367438B2 (en) Conditional execution processing device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040423

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060718

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060914

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20061219

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070219

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070223

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070403

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070405

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: 20070515

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070517

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: 20100525

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110525

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120525

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130525

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20140525

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees