JPH03186945A - プログラム実行特性の測定方法 - Google Patents

プログラム実行特性の測定方法

Info

Publication number
JPH03186945A
JPH03186945A JP1325917A JP32591789A JPH03186945A JP H03186945 A JPH03186945 A JP H03186945A JP 1325917 A JP1325917 A JP 1325917A JP 32591789 A JP32591789 A JP 32591789A JP H03186945 A JPH03186945 A JP H03186945A
Authority
JP
Japan
Prior art keywords
program
measurement
routine
measured
initialization
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP1325917A
Other languages
English (en)
Inventor
Junichi Kobayashi
純一 小林
Minoru Harada
稔 原田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP1325917A priority Critical patent/JPH03186945A/ja
Publication of JPH03186945A publication Critical patent/JPH03186945A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 (産業上の利用分野) 本発明は、プログラムの実行速度を向上させたり、テス
トの完全性を評価するために、プログラムの実行特性を
測定することを支援するプログラム実行特性の測定方法
に関する。
(従来の技術) 一般に、プログラムの実行特性には、次のものが含まれ
る。
(1)実行に伴う計算機資源の消費量(CPU稼動時間
、主記憶使用量、ディスク使用量、入出力実行回数など
)。
(2)モジュール、サブルーチン毎の呼出し回数。
(3)プログラム行毎の実行回数。
プログラム開発者は、上記 (1)を測定することによ
り、プログラムの実行上の問題点を定量的に評価するこ
とができ、また上記 (2)、(3)を測定することに
より、プログラムのある部分が異常に多く実行されてい
たり、逆に全く実行されていないといった特性を把握し
、プログラムの特性と品質を向上させることができる(
例えば、頻繁に使用されるプログラム部分を高速なプロ
グラムに切替えたり、テスト完全評価を行なうことがで
きる)。
ところで、プログラムの実行特性の測定を支援するシス
テムは、これまで各種実現されており、それらは、はぼ
rUNIX原典J AT&Tベル研究所編(監修者、石
田晴久)、発行所:パーソナルメディア■、昭和61年
11月15日発行(初版)P、 273〜287に開示
された方式によっている。
即ち、プログラム実行特性の測定を支援するシステムは
、 (1)プログラムの実行に先立って、実行特性数値を計
数するための領域をメモリ上に割付け、初期化する手段
と、 (2)プログラムを走査して、プログラムの動作に影響
を与えないような計数用コードを埋込む手段と、 (3)プログラム終了後に計数結果を集計して色々な形
式の出力を行なう手段 からなっている。
第2図は、上記文献に述べられている計測処理の埋込み
例を示す説明図である。
同図において、ソースプログラムとしての高級言語プロ
グラムをコンパイラでアセンブリ言語プログラムに直し
、更に計測処理埋込みを行なったものが右側のアセンブ
リ言語プログラムである。
ここで、計数処理埋込みに当たっては、先ず、プログラ
ムの先頭にメモリ上の計数用領域を初期化するための初
期化ルーチン呼出し1を埋込み、更に計測すべき基本ブ
ロック(プログラム片の区切り)2毎にその基本ブロッ
ク2の前に計測ルーチン呼出し3を埋込んでいる。なお
、基本ブロックとは、命令の連続的集合であり、最初の
命令が実行されたら、そのブロック内の全ての命令が実
行されるようなものである。
第3図は第2図のプログラムの実行時の計測データの流
れを示す説明図である。
同図において、4の部分には第2図の右側のプログラム
の中の測定すべき各基本ブロック2が測定対象プロセス
としてメモリに格納されている。
先ず、初期化ルーチン呼出し1に基づき初期化ルーチン
↑aにて、メモリ上に計数用領域5を確保し、この計数
用領域5に、4の部分に格納された測定すべき各基本ブ
ロック2のブロックM、を例えば便宜上の、■、■、・
・・、というようにして割付け、更に計数用領域5を初
期化する。次に計測ルーヂン呼出し3に基づき、計測ル
ーチン3aにて、次にアクセスした4の部分の該当する
基本ブロック2(胤の)を計数用領域5の該当するブロ
ック弘の■のところに+1を加算していく。以下、同様
に基本ブロック2を実行する毎に、計数用領域5の該当
するブロック先の箇所に+1を加算していく。そして終
了ルーチン6にて、計数用領域5に記録された計数結果
はハードディスク7上の計測結果ファイルに記録される
。更に計測結果編集プログラム8に従い、報告レポート
9が作成される。
(発明が解決しようとする課題) しかしながら上述したように、従来のプログラム実行特
性の測定を支援するシステムの何れにおいても、次のよ
うな問題点があった。
(1)第2図の右側のプログラムに示す如く、計測しよ
うとする部分、即ち計測すべき基本ブロック2を通過す
る前に、必ず計数用領域5の初期化処理を通過しなけれ
ばならない。従って、ある1つのモジュールのプログラ
ムの途中から、ある基本ブロック2を計測することはで
きない。即ち、1つのモジュールのプログラム中のある
基本ブロックを計測したい場合でも、プログラムを初め
から実行しなければならないので計測不要な他の基本ブ
ロックまでも計測しなければならない。
(2)各モジュールのプログラムの最初に必ず初期化ル
ーチンが設けられている。従って多数のモジュールから
なる大規模プログラムにおいては、計測したいと思うモ
ジュールのプログラムがメインプログラムの中の1つモ
ジュールのプログラムである場合に、メインプログラム
がそのモジュールを何回も呼出すことがある。このため
、計測したいモジュールに、メインプログラムから呼出
しがある度にそのモジュールの計数用領域5を初期化す
るので、計測したいモジュールについての集計がてきな
い。よって、小さなプログラムにしか、即ち計測したい
モジュール自体のプログラムがメインプログラムのとき
のみしか、適用できず、大規模プログラムには適用でき
ない。
そこで、本発明の目的は、多数のモジュールからなる大
規模プログラムであるか否かに拘らず、計測したいモジ
ュールのプログラムあるいはその部分の正確な計測結果
を得ることができるプログラム実行特性測定方法を提供
することにある。
(課題を解決するための手段) 本発明は、初期化手段によりプログラムの計測対象とな
る部分に対する計測用メモリ領域の割付けと初期化を行
なった上で前記プログラムの実行特性の測定を行なうプ
ログラム実行特性の測定方法において、前記プログラム
の計測対象となる部分に計測手段指示コードを埋込んで
おき、前記プログラムの実行時の最初の計測手段指示コ
ードに基づき前記計測手段に指示を与えるときにのみ、
前記計測手段により前記初期化手段に指示を与えるよう
にし、前記初期化手段により前記計測用メモリ領域の割
付けと初期化を行なうようにしたものである。
(作用) プログラムの計測対象となる部分に計測手段指示コート
を埋込んでおき、プログラムの実行時の最初の計測手段
指示コードに基づき計測手段に指示を与えるときにのみ
、計測手段により初期化手段に指示を与えるようにし、
初期化手段により計測用メモリ領域の割付けと初期化を
行なう。この後プログラムの実行特性の測定を行なうよ
うにしたものである。これにより、多数のモジュールか
らなる大規模プログラムであるか否かに拘らず、計測し
たいモジュールのプログラムあるいはその部分の正確な
計測結果を得ることができる。
(実施例) 次に本発明の実施例について、図面を用いて説明する。
第1図は本発明の一実施例を示す計測処理の埋込み説明
図である。
同図において、第2図との相異点について述べると、右
側の計測処理埋込みプログラムは、計測すべき各基本ブ
ロック2の前に計測ルーチン呼出しコードのみを埋込み
、初期化ルーチン呼出しのコートは埋込まないようにし
たことである。
第4図は第1図の被計測プログラム実行時の計測機構の
動きを示す説明図である。第4図においては、第3図と
は異なり、初期化ルーチンは計測ルーチンから呼出され
るようになっており、その他の構成については第3図と
同様である。第5図は本発明による計測ルーチンと初期
化ルーチンの処理と関係を示すフローチャートである。
次に、第4図の動作について第5図を参照して説明する
計測ルーチン呼出し3に基づき、計測ルーチン3aは、
先ず先頭で、初期化ルーチン1aを呼出す(第5図のス
テップSl)。これにより初期化ルーチンlaは、計数
用領域5の割付けと計数用領域5のデータの初期化を行
ない(第5図のステップS3.S4) 、この後、初期
化ルーチン1a自身を呼出した計測ルーチン3a中の呼
出し命令を無効命令に書換える(第5図のステップS5
)。従って、初期化ルーチン1aは、プログラム実行時
の第1回目の計測ルーチン呼出しのときにのみ呼出され
ることになる。次いで、計測ルーチン3aは、パラメー
タに渡された計数データを計数用領域5に累算する(第
5図のステップS2)。第3図で説明したようにプログ
ラムの実行順序に従って、計数用領域5における基本ブ
ロック2のブロックNo、の該当箇所に+1を加算して
いく。そして、終了ルーチン6にてプログラムの計測結
果がハードディスク7の計測結果ファイルに記録され、
更に計測結果編集プログラム8に従い報告レポート9が
作成される。
なお、本発明では、計測ルーチン呼出しは、計測すべき
モジュールの計測すべき基本ブロックの前に埋込まれる
ので、計測ルーチン呼出しは、測定対象モジュールから
しか出されない。しかし、プログラム実行時に、測定対
象モジュールのプログラム中どの部分(計測すべき基本
ブロック)を 0 最初に通過しようとも、そこに埋込まれた計測ルーチン
呼出しにより初期化ルーチンが呼出され、計数用領域5
が準備される(第5図のステップSl、S3.S4)。
このように、本発明では、第5図のルーチン処理を行な
うことにより、従来に比べ必ずしも1つのモジュールの
プログラムの最初からプログラムを実行しなくてもよく
、要は計測すべき基本ブロック箇所のプログラムから実
行することができる。これにより計測すべき基本ブロッ
クをメモリに取込んで計測するので、メモリの使用上無
駄がない。
これに対し、第2図、第3図に示すような従来方式では
、初期化ルーチン呼出しを測定対象モジュールのプログ
ラムの最初に通過する点に埋込まなければならないが、
モジュールのプログラム中に、外部からの入口(プログ
ラムの呼出し口)が複数ある場合、その何れが最初に通
過する点かは、計測処理埋込みプログラムには判断でき
ないため、結局、全ての入口点に初期化ルーチン呼出し
コードを埋込む必要が生じ、コードの無駄となす、この
コード部分のメモリ容量が大きくなり、コスト高となる
また、本発明では、第6図に示すように、右側の計数処
理プログラムをコンパイラの中に取込み、コンパイラに
対する指示で、左側のソースプログラム中の指定された
部分(例えばソース35〜65まで)だけを計測対象と
するような方法も可能である。従来のように初期化ルー
チン呼出しを固定的にプログラム中に埋込むような方式
では、計測対象部分のうちの他から分岐して来得る全て
の点に初期化ルーチン呼出しを埋込まなければならなく
なる。これに対し、本発明では、プログラム全体の論理
とは無関係に、計測対象部分(計測対象基本ブロック)
にだけ図示の如く計測ルーチン呼出しのコードを埋込め
ばよく、従来のように初期化ルーチン呼出しコードの埋
込みは不要である。
以上の説明から判かるように、プログラムの計測すべき
箇所に(計測すべき基本ブロックの前に)予め計測ルー
チン呼出しコードを埋込んでおき、プログラム実行時に
最初に計測ルーチンが呼出されたときにのみ計測用領域
5を初期化する初期化ルーチンを呼出すようにしたので
、多数のモジュールから構成される大規模プログラムの
うちの、1つのモジュールに関する実行特性を測定した
いときに、効率のよい埋込みコードを生成することがで
きる。即ち、大規模プログラムとは無関係に計測すべき
モジュールの計測すべき各基本ブロック箇所に計測ルー
チン呼出しコードを埋込んでおくだけでよい。そして、
同じモジュールをメインプログラムにより何回も呼出す
ことがあっても、第5図に示すように1回目の呼出しの
ときだけ初期化が行なわれるだけなので、大規模プログ
ラムの場合でも、計測すべきモジュールの計測結果を正
確に得ることができる。
本発明は本実施例に限定されることなく、本発明の要旨
を逸脱しない範囲で種々の応用及び変形が考えられる。
(発明の効果) 上述したように本発明を用いれば次のような種々の効果
を奏する。
(1)プログラムの計測対象となる部分に計測手段指示
コードを埋込んでおき、プログラム実行時の最初の計測
手段指示コードに基づき計測手段に指示を与えるときに
のみ、計測手段により初期化手段に指示を与えるように
したので、プログラムの最初から又はプログラムの途中
からでも、プログラム又はその部分の計測を行なうこと
ができる。計測したいプログラム部分のみを計測するこ
とができる。
(2)また、計測対象のプログラムがメインプログラム
のうちの1つであり、メインプログラムから何回もその
計測対象のプログラムを呼出す場合であっても、その計
測対象プログラムの正確な計測結果を得ることができる
。よって、多数のモジュールからなる大規模プログラム
であるか否かに拘らず、計測したいモジュールのプログ
ラムあるいはその部分の正確な計測結果を得ることがで
きる。
【図面の簡単な説明】
 4 第1図は本発明によるプログラム実行特性の測定方法の
一実施例を示す要部説明図、第2図は従来の計測処理の
埋込み例を示す説明図、第3図は第2図の被計測プログ
ラム実行時の計測データの流れを示す説明図、第4図は
第1図の被計測プログラム実行時の計測機構の動きを示
す説明図、第5図は本発明による各ルーチンの処理を示
すフローチャート、第6図は本発明による部分的な計測
処理の埋込み例を示す説明図である。 1a・・・初期化ルーチン、2・・・基本ブロック、3
・・・計測ルーチン呼出し、3a・・・計測ルーチン、
5・・・計数用領域。

Claims (1)

  1. 【特許請求の範囲】 初期化手段によりプログラムの計測対象となる部分に対
    する計測用メモリ領域の割付けと初期化を行なった上で
    前記プログラムの実行特性の測定を行なうプログラム実
    行特性の測定方法において、 前記プログラムの計測対象となる部分に計測手段指示コ
    ードを埋込んでおき、 前記プログラムの実行時の最初の計測手段指示コードに
    基づき前記計測手段に指示を与えるときにのみ、前記計
    測手段により前記初期化手段に指示を与えるようにし、 前記初期化手段により前記計測用メモリ領域の割付けと
    初期化を行なうようにしたことを特徴とするプログラム
    実行特性の測定方法。
JP1325917A 1989-12-18 1989-12-18 プログラム実行特性の測定方法 Pending JPH03186945A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1325917A JPH03186945A (ja) 1989-12-18 1989-12-18 プログラム実行特性の測定方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1325917A JPH03186945A (ja) 1989-12-18 1989-12-18 プログラム実行特性の測定方法

Publications (1)

Publication Number Publication Date
JPH03186945A true JPH03186945A (ja) 1991-08-14

Family

ID=18182038

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1325917A Pending JPH03186945A (ja) 1989-12-18 1989-12-18 プログラム実行特性の測定方法

Country Status (1)

Country Link
JP (1) JPH03186945A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003526135A (ja) * 1998-11-16 2003-09-02 インシグニア・ソリューションズ・ピーエルシー コンピュータ・システム、コンピュータ読取り可能な記憶媒体および同媒体を動作させる方法、およびコンピュータ・システムを動作させる方法
JP2009093310A (ja) * 2007-10-05 2009-04-30 Hitachi Ltd 実行コード生成装置、実行コード生成方法、及びソースコードの管理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003526135A (ja) * 1998-11-16 2003-09-02 インシグニア・ソリューションズ・ピーエルシー コンピュータ・システム、コンピュータ読取り可能な記憶媒体および同媒体を動作させる方法、およびコンピュータ・システムを動作させる方法
JP2009093310A (ja) * 2007-10-05 2009-04-30 Hitachi Ltd 実行コード生成装置、実行コード生成方法、及びソースコードの管理方法

Similar Documents

Publication Publication Date Title
US5987250A (en) Transparent instrumentation for computer program behavior analysis
US5146594A (en) Method of producing object program based on interprocedural dataflow analysis of a source program
EP0528024B1 (en) Improved error reporting for translated code execution
US6374369B1 (en) Stochastic performance analysis method and apparatus therefor
US5528753A (en) System and method for enabling stripped object software monitoring in a computer system
US9274923B2 (en) System and method for stack crawl testing and caching
US8286149B2 (en) Apparatus for and method of implementing feedback directed dependency analysis of software applications
US20020184615A1 (en) System and method for selectively and automatically modifying the source code of a computer program
US5396627A (en) Method of producing object program based on interprocedural dataflow analysis of a source program
JPH11110194A (ja) 外部ライブラリ関数との結合方法ならびに同方法がプログラムされ記録される記録媒体
EP4009176A1 (en) Methods and apparatus to generate graphics processing unit long instruction traces
Galarowicz et al. Analyzing message passing programs on the Cray T3E with PAT and VAMPIR
US6728951B1 (en) System and method for performing automated incremental compilation of computer programs
US6256776B1 (en) Digital signal processing code development with fixed point and floating point libraries
JP6500626B2 (ja) 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法
JPH03186945A (ja) プログラム実行特性の測定方法
Molitorisz Pattern-based refactoring process of sequential source code
US11714618B2 (en) Streaming compiler for automatic adjoint differentiation
JPH08305583A (ja) Cpuシミュレーション方法
JP4860564B2 (ja) プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム
US20140173572A1 (en) Constraint derivation in context following for use with object code insertion
JP3608993B2 (ja) コンパイラ装置及びコンパイラプログラムを記録した記録媒体
JPH06161825A (ja) ソフトウェアプログラムのテストカバレッジ計測装置
EP1183596B1 (en) Generating optimized computer data field conversion routines
JPH02176938A (ja) 機械語命令最適化方式