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 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
【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
[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
[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
[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
[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
[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
[0045]
Therefore, since the user can add or modify the
[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
[0048]
In this way, the user can add or modify the
[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
[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
[0056]
The performance deterioration analysis unit B detects a performance deterioration
[0057]
As shown in FIG. 4, the performance prediction unit C includes a performance prediction
[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 “
[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
[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
[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
[0064]
(3): In the object-oriented program performance improvement support device of (1), the analysis
[0065]
The class name, process name, and process pattern (that is, each item of the
[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
[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
[0069]
The class name, process name, and process pattern (that is, each item of the
[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
[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
[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
[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
[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
[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
[0082]
In this way, the user can add or modify the
[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
[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
[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
[0088]
In the process of S-3, the performance deterioration
[0089]
Next, in the process of S-5, the
[0090]
In the process of S-6, the
[0091]
In the process of S7, the
[0092]
In the process of S-8, the iteration / concentration
[0093]
In the process of S-11, the performance deterioration
[0094]
In the process of S12, the
[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
[0097]
First, in the process of S-3-1, the
[0098]
In the process of S-3-4, the performance deterioration
[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
[0100]
First, in the process of S-8-1, the
[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
[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 (
[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
[0106]
In the process of S-11-1, the
[0107]
In the process of S-11-4, the performance degradation
[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
[0109]
In the process of S-13-1, the
[0110]
In the process of S-13-2, the performance prediction
[0111]
On the other hand, in the process of S-13-3, the
[0112]
In the process of S-13-4, the performance prediction
[0113]
In the process of S-13-7, the
[0114]
In the process of S-13-8, the
[0115]
In the process of S-13-10, the
[0116]
In the process of S-13-11, the
[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
[0118]
In the process of S-13-2-1, the
[0119]
In the process of S-13-2-3, the performance prediction
[0120]
In the process of S-13-2-5, the performance prediction
[0121]
In the process of S-13-2-6, the performance prediction
[0122]
In the process of S-13-2-8, the performance prediction
[0123]
In the process of S-13-2-9, the performance prediction
[0124]
In the process of S-13-2-10, the performance prediction
[0125]
On the other hand, in the process of S-13-2-11, the performance prediction
[0126]
In the process of S-13-2-13, the performance prediction
[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
[0128]
In the process of S-13-4-1, the
[0129]
In the process of S-13-4-3, the performance prediction
[0130]
In the process of S-13-4-5, the performance prediction
[0131]
In the process of S-13-4-7, the performance prediction
[0132]
In the process of S-13-4-8, the performance prediction
[0133]
In the process of S-13-4-9, the performance prediction
[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
[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
[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,
[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,
[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,
[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
[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
[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
[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
[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
[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
[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
[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
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)
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)
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 |
-
2001
- 2001-06-05 JP JP2001168933A patent/JP3961787B2/en not_active Expired - Fee Related
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 |