JP3961787B2 - オブジェクト指向プログラム性能改善支援装置、記録媒体及びプログラム - Google Patents
オブジェクト指向プログラム性能改善支援装置、記録媒体及びプログラム Download PDFInfo
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
【発明の属する技術分野】
本発明は、オブジェクト指向プログラムの実行性能改善支援を行うオブジェクト指向プログラム性能改善支援装置及び記録媒体に関する。
【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 通信制御部
Claims (3)
- オブジェクト指向プログラムのソースコードを解析し、性能劣化の可能性のある箇所を検出する性能劣化解析部と、
性能の予測を行う性能予測部と、
前記性能劣化解析部及び性能予測部に共通の共通部とを有し、
前記性能劣化解析部には、
オブジェクト指向プログラムの実行性能を劣化させる可能性のある箇所を、予め実行環境毎に性能劣化情報として蓄積した実行環境別性能劣化情報記憶手段と、性能劣化箇所の解析処理を行う性能劣化箇所解析部と、性能劣化箇所の検出情報をディスプレイ装置の画面に表示する性能劣化箇所表示処理部とを少なくとも備え、
前記共通部には、解析対象のオブジェクト指向プログラムのソースコードを記憶したソースコード記憶手段と、外部からの入力値を基に、前記性能劣化箇所解析部に対して解析制御を行う解析制御手段を少なくとも備えたオブジェクト指向プログラム性能改善支援装置であって、
前記性能劣化箇所解析部は、前記解析制御手段の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析して、前記実行環境別性能劣化情報記憶手段の性能劣化情報が含まれる箇所を、実行性能を劣化させる可能性のある箇所として検出する機能を有し、
前記性能劣化箇所表示処理部は、前記性能劣化箇所解析部が検出した結果の情報をディスプレイ装置の画面に表示する機能を有すると共に、
前記性能予測部には、
実行環境別性能実測情報を予め登録しておく実行環境別性能実測情報登録手段と、実行環境別性能予測情報を予め登録しておく実行環境別性能予測情報登録手段と、性能予測式の導出処理を行う性能予測式導出部と、結果計算部と、性能予測結果の情報をディスプレイ装置の画面に表示する処理を行う性能予測結果表示処理部とを少なくとも備え、
前記性能予測式導出部は、前記解析制御部の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析し、指定された処理中で、或るメソッドが呼ばれた際に生成されるクラスのインスタンス又は配列の数の性能予測式を導出し、併せて、前記実行環境別性能実測情報登録手段に予め登録されているクラス毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する機能を有すると共に、
外部からの入力値によって指示があった場合、前記導出された性能予測式を、前記実行環境別性能予測情報登録手段に登録する機能を有し、
前記結果計算部は、ユーザが入力した値を前記性能予測計算式に代入して性能予測値を得る機能を有し、
前記性能予測結果表示処理部は、前記性能予測計算式の変数部分に対応する前記ソースコードの箇所をディスプレイ装置の画面に表示する機能を有し、
前記結果計算部は、前記表示された情報を基にユーザが入力した値を、前記性能予測式導出部が導出した性能予測式に代入して性能予測値を得る機能を有することを特徴とするオブジェクト指向プログラム性能改善支援装置。 - オブジェクト指向プログラムのソースコードを解析し、性能劣化の可能性のある箇所を検出する性能劣化解析部と、
性能の予測を行う性能予測部と、
前記性能劣化解析部及び性能予測部に共通の共通部とを有し、
前記性能劣化解析部には、
オブジェクト指向プログラムの実行性能を劣化させる可能性のある箇所を、予め実行環境毎に性能劣化情報として蓄積した実行環境別性能劣化情報記憶手段と、性能劣化箇所の解析処理を行う性能劣化箇所解析部と、性能劣化箇所の検出情報をディスプレイ装置の画面に表示する性能劣化箇所表示処理部とを少なくとも備え、
前記共通部には、解析対象のオブジェクト指向プログラムのソースコードを記憶したソースコード記憶手段と、外部からの入力値を基に、前記性能劣化箇所解析部に対して解析制御を行う解析制御手段を少なくとも備えたオブジェクト指向プログラム性能改善支援装置に、
前記性能劣化箇所解析部は、前記解析制御手段の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析して、前記実行環境別性能劣化情報記憶手段の性能劣化情報が含まれる箇所を、実行性能を劣化させる可能性のある箇所として検出する機能を有し、
前記性能劣化箇所表示処理部は、前記性能劣化箇所解析部が検出した結果の情報をディスプレイ装置の画面に表示する機能を有すると共に、
前記性能予測部には、
実行環境別性能実測情報を予め登録しておく実行環境別性能実測情報登録手段と、実行環境別性能予測情報を予め登録しておく実行環境別性能予測情報登録手段と、性能予測式の導出処理を行う性能予測式導出部と、結果計算部と、性能予測結果の情報をディスプレイ装置の画面に表示する処理を行う性能予測結果表示処理部とを少なくとも備え、
前記性能予測式導出部は、前記解析制御部の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析し、指定された処理中で、或るメソッドが呼ばれた際に生成されるクラスのインスタンス又は配列の数の性能予測式を導出し、併せて、前記実行環境別性能実測情報登録手段に予め登録されているクラス毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する機能を有すると共に、
外部からの入力値によって指示があった場合、前記導出された性能予測式を、前記実行環境別性能予測情報登録手段に登録する機能を有し、
前記結果計算部は、ユーザが入力した値を前記性能予測計算式に代入して性能予測値を得る機能を有し、
前記性能予測結果表示処理部は、前記性能予測計算式の変数部分に対応する前記ソースコードの箇所をディスプレイ装置の画面に表示する機能を有し、
前記結果計算部は、前記表示された情報を基にユーザが入力した値を、前記性能予測式導出部が導出した性能予測式に代入して性能予測値を得る機能を有するという前記各部の機能を実現させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体。 - オブジェクト指向プログラムのソースコードを解析し、性能劣化の可能性のある箇所を検出する性能劣化解析部と、
性能の予測を行う性能予測部と、
前記性能劣化解析部及び性能予測部に共通の共通部とを有し、
前記性能劣化解析部には、
オブジェクト指向プログラムの実行性能を劣化させる可能性のある箇所を、予め実行環境毎に性能劣化情報として蓄積した実行環境別性能劣化情報記憶手段と、性能劣化箇所の解析処理を行う性能劣化箇所解析部と、性能劣化箇所の検出情報をディスプレイ装置の画面に表示する性能劣化箇所表示処理部とを少なくとも備え、
前記共通部には、解析対象のオブジェクト指向プログラムのソースコードを記憶したソースコード記憶手段と、外部からの入力値を基に、前記性能劣化箇所解析部に対して解析制御を行う解析制御手段を少なくとも備えたオブジェクト指向プログラム性能改善支援装置に、
前記性能劣化箇所解析部は、前記解析制御手段の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析して、前記実行環境別性能劣化情報記憶手段の性能劣化情報が含まれる箇所を、実行性能を劣化させる可能性のある箇所として検出する機能を有し、
前記性能劣化箇所表示処理部は、前記性能劣化箇所解析部が検出した結果の情報をディスプレイ装置の画面に表示する機能を有すると共に、
前記性能予測部には、
実行環境別性能実測情報を予め登録しておく実行環境別性能実測情報登録手段と、実行環境別性能予測情報を予め登録しておく実行環境別性能予測情報登録手段と、性能予測式の導出処理を行う性能予測式導出部と、結果計算部と、性能予測結果の情報をディスプレイ装置の画面に表示する処理を行う性能予測結果表示処理部とを少なくとも備え、
前記性能予測式導出部は、前記解析制御部の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析し、指定された処理中で、或るメソッドが呼ばれた際に生成されるクラスのインスタンス又は配列の数の性能予測式を導出し、併せて、前記実行環境別性能実測情報登録手段に予め登録されているクラス毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する機能を有すると共に、
外部からの入力値によって指示があった場合、前記導出された性能予測式を、前記実行環境別性能予測情報登録手段に登録する機能を有し、
前記結果計算部は、ユーザが入力した値を前記性能予測計算式に代入して性能予測値を得る機能を有し、
前記性能予測結果表示処理部は、前記性能予測計算式の変数部分に対応する前記ソースコードの箇所をディスプレイ装置の画面に表示する機能を有し、
前記結果計算部は、前記表示された情報を基にユーザが入力した値を、前記性能予測式導出部が導出した性能予測式に代入して性能予測値を得る機能を有するという前記各部の機能を実現させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001168933A JP3961787B2 (ja) | 2000-06-12 | 2001-06-05 | オブジェクト指向プログラム性能改善支援装置、記録媒体及びプログラム |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000174983 | 2000-06-12 | ||
JP2000-174983 | 2000-06-12 | ||
JP2001168933A JP3961787B2 (ja) | 2000-06-12 | 2001-06-05 | オブジェクト指向プログラム性能改善支援装置、記録媒体及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002073369A JP2002073369A (ja) | 2002-03-12 |
JP3961787B2 true JP3961787B2 (ja) | 2007-08-22 |
Family
ID=26593722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001168933A Expired - Fee Related JP3961787B2 (ja) | 2000-06-12 | 2001-06-05 | オブジェクト指向プログラム性能改善支援装置、記録媒体及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3961787B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4914609B2 (ja) * | 2005-12-28 | 2012-04-11 | 富士通株式会社 | ソースコード問題予測プログラム |
KR100767273B1 (ko) * | 2006-09-12 | 2007-10-17 | 박란 | 버스 위험경고장치 |
WO2008038389A1 (fr) | 2006-09-28 | 2008-04-03 | Fujitsu Limited | Appareil d'analyse de performance de programme |
JP5240220B2 (ja) * | 2010-03-04 | 2013-07-17 | 日本電気株式会社 | ソフトウェア実効性能評価システム、ソフトウェア実効性能評価方法、及びプログラム |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04101241A (ja) * | 1990-08-20 | 1992-04-02 | N T T Data Tsushin Kk | 計算機性能評価用装置 |
JP2740352B2 (ja) * | 1990-11-29 | 1998-04-15 | 富士通テン株式会社 | プログラム解析装置 |
JPH07152578A (ja) * | 1993-11-29 | 1995-06-16 | Fuji Facom Corp | 最大スタック使用量検出方式 |
JPH07271572A (ja) * | 1994-03-30 | 1995-10-20 | Hitachi Software Eng Co Ltd | 動的ステップ数計算式の生成方法 |
JPH0869380A (ja) * | 1994-08-29 | 1996-03-12 | Fujitsu Ltd | ソースプログラムチェック装置 |
JPH11219289A (ja) * | 1998-02-02 | 1999-08-10 | Fujitsu Ltd | オブジェクト指向プログラム品質評価装置 |
JP2000122895A (ja) * | 1998-10-20 | 2000-04-28 | Matsushita Electric Ind Co Ltd | スタックサイズ解析方法及びスタックサイズ解析装置 |
JP2000132387A (ja) * | 1998-10-22 | 2000-05-12 | Fujitsu Ltd | オブジェクト指向プログラム作成支援装置 |
-
2001
- 2001-06-05 JP JP2001168933A patent/JP3961787B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002073369A (ja) | 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 | |
JP3790683B2 (ja) | コンピュータ装置、その例外処理プログラム及びコンパイル方法 | |
Creusillet et al. | Interprocedural array region analyses | |
JP3707727B2 (ja) | プログラムの最適化方法及びこれを用いたコンパイラ | |
US7178132B2 (en) | Forward walking through binary code to determine offsets for stack walking | |
US5659752A (en) | System and method for improving branch prediction in compiled program code | |
US6148437A (en) | System and method for jump-evaluated trace designation | |
JP4105264B2 (ja) | コンパイラ | |
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 | |
US7451439B2 (en) | System and method for automatically identifying compound refactorings of program code through quantitative metric analysis | |
US6964042B2 (en) | System and method for iterative code optimization using adaptive size metrics | |
JP2002116916A (ja) | プログラムの最適化方法及びこれを用いたコンパイラ | |
Ball et al. | Using paths to measure, explain, and enhance program behavior | |
JP3961787B2 (ja) | オブジェクト指向プログラム性能改善支援装置、記録媒体及びプログラム | |
JP3237693B2 (ja) | 言語処理装置および言語処理方法 | |
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 | |
US9274929B2 (en) | Constraint derivation in context following for use with object code insertion | |
JP3910831B2 (ja) | プログラム開発支援装置、記録媒体、及びプログラム | |
Chan et al. | A program slicing system for Object-Oriented programs | |
Dragos | Optimizing Higher-Order Functions in Scala | |
JP4674742B2 (ja) | コンパイル方法、デバッグ方法、およびデバッグプログラム | |
JP2003131888A (ja) | 手続き間命令スケジューリング方法 |
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 |