説明

コンパイル装置、プログラムおよびコンパイル中におけるコンパイルの終了までの残り時間の表示方法

【課題】 コンパイルの残り所要時間を計算するための計算モデルの係数等を事前に求めておく必要が無く、コンパイルの残り所要時間をリアルタイムに表示することのできるコンパイル装置の提供。
【解決手段】 入力されたソースプログラムを予め展開した展開済みソースプログラムのうちのコンパイル済みの行数と、コンパイル開始からの経過時間と、前記展開済みソースプログラムのうちのコンパイルが済んでいない行数と、を用いてコンパイルの終了までの残り時間を算出して、表示装置に表示する。コンパイルの終了までの残り時間の表示がリアルタイムに表示されるよう、コンパイルの終了までの残り時間の算出と、表示装置への表示は、所定の時間間隔で繰り返し実行される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンパイル装置、プログラムおよびコンパイル中におけるコンパイルの終了までの残り時間の表示方法に関する。
【背景技術】
【0002】
ソースプログラムをコンパイルしてオブジェクトファイルを生成するコンパイル処理は、ソースプログラムの規模が大きい場合、非常に長い時間を要することが知られている。
【0003】
そこで、特許文献1には、構文解析や意味解析といったフェーズ毎に、コンパイル実行時間を算出し、積み上げてコンパイル終了時間を求める計算モデルを用いて、コンパイル終了時間を計算して、利用者端末に表示させる手段を備えたコンパイル装置が開示されている。
【0004】
また、特許文献2には、ソースプログラムのバイト数を用いて、コンパイルの残り時間を予測する翻訳時間予測部と、この残り時間を表示する翻訳残り時間表示部と、を備えたコンパイル装置が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平4−065721公報
【特許文献2】特開平5−257705公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1のコンパイル装置は、コンパイル開始時に翻訳対象のコンパイル終了時間を計算して表示するものであり、その後のシステムの負荷状況により生じする翻訳対象のコンパイル終了時間の変動を、コンパイル終了時間に反映することができないという問題点がある。
【0007】
一方、特許文献2のコンパイル装置は、コンパイル開始時に翻訳対象のコンパイル終了時間を計算して表示することができるとされているが、同文献の段落0019に記載されているとおり、大量のサンプルプログラムコンパイルを行って基準値α1〜α3を事前に決定しておく必要がある。また、このようにして得られた基準値α1〜α3は、コンパイルに用いるコンピュータの性能によって変動するため、別のコンピュータでは上記決定した基準値α1〜α3が必ずしも妥当するとは限らないという問題点がある。
【0008】
本発明は、上記した事情に鑑みてなされたものであって、コンパイルの残り所要時間を算出するにあたり、その計算モデルの係数等を事前に求めておく必要が無く、コンパイルの残り所要時間をリアルタイムに表示することのできるコンパイル装置、プログラムおよびコンパイル中におけるコンパイルの終了までの残り時間の表示方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の第1の視点によれば、入力されたソースプログラムを展開した展開済みソースプログラムのコンパイル中に所定の時間間隔で、前記展開済みソースプログラムのうちのコンパイル済みの行数と、コンパイル開始からの経過時間と、前記展開済みソースプログラムのうちのコンパイルが済んでいない行数と、を用いて、コンパイルの終了までの残り時間を算出して、表示装置に表示するコンパイル時間計算部を含むコンパイル処理部を備えるコンパイル装置が提供される。
【0010】
本発明の第2の視点によれば、入力されたソースプログラムを予め展開した展開済みソースプログラムのうちのコンパイル済みの行数と、コンパイル開始からの経過時間と、前記展開済みソースプログラムのうちのコンパイルが済んでいない行数と、を用いてコンパイルの終了までの残り時間を算出し、表示装置に表示する処理をコンパイラが作動しているコンピュータに所定の時間間隔で実行させるプログラムが提供される。
【0011】
本発明の第3の視点によれば、入力されたソースプログラムを予め展開した展開済みソースプログラムのうちのコンパイル済みの行数と、コンパイル開始からの経過時間と、前記展開済みソースプログラムのうちのコンパイルが済んでいない行数と、を用いてコンパイルの終了までの残り時間を所定の時間間隔で算出するステップと、前記コンパイルの終了までの残り時間を表示装置に表示するステップとを、含むコンパイルの終了までの残り時間の表示方法が提供される。
【発明の効果】
【0012】
本発明によれば、コンパイル中に所定の時間間隔で、コンパイル所要時間を再計算し、その残り時間をユーザに伝えることが可能となる。また、本発明では、実際のコンパイル時間に基づいて終了予測時間を再計算しているため、コンパイル実行中におけるコンピュータの負荷の変化や、コンパイルを行うコンピュータの仕様の違いによる影響を受けることもない。
【図面の簡単な説明】
【0013】
【図1】本発明の第1の実施形態のコンパイル前処理部の構成を表したブロック図である。
【図2】本発明の第1の実施形態のコンパイル処理部の構成を表したブロック図である。
【図3】展開済みソースプログラムの構成を模式的に表した図である。
【図4】本発明の第1の実施形態のコンパイル処理部が用いる計算モデル中の変数の表である。
【発明を実施するための形態】
【0014】
続いて、本発明の概要について簡単に説明する。本発明は、コンパイル実行部(図2の340)に加えて、行数取得部(図2の310)およびコンパイル時間計算部(図2の320)を含むコンパイル処理部(図2の300)を備えるコンパイル装置により実現できる。
【0015】
コンパイル時間計算部(図2の320)は、入力されたソースプログラムを展開した展開済みソースプログラムのコンパイル中に所定の時間間隔で、展開済みソースプログラムのうちのコンパイル済みの行数と、コンパイル開始からの経過時間(図2の処理時間計測タイマ350から入手)とから、一行あたりのコンパイル処理速度を求め、これに展開済みソースプログラムの手続き部の総行数を乗じて予測コンパイル時間を求める。さらに、コンパイル時間計算部(図2の320)は、この予測コンパイル時間と、前記コンパイル開始からの経過時間と、の差により、現時点からコンパイルの終了までの残り時間を算出して、表示装置に表示する処理を繰り返す。
【0016】
以上により、コンピュータ毎に計算モデルを調整することなく、コンパイルの残り所要時間をリアルタイムに表示することが可能となる。
【0017】
[第1の実施形態]
続いて、本発明の第1の実施形態について図面を参照して詳細に説明する。図1は、コンパイルの前処理を行うコンパイル前処理部の構成を表したブロック図である。
【0018】
図1を参照すると、コード展開部210と行数集計部220とを備えたコンパイル前処理部200が示されている。
【0019】
コード展開部210は、入力データとしてソースプログラム100を受け取り、ソースプログラム100の展開処理を行う。展開処理とは、例えば、C言語において、ヘッダファイルをincludeしている部分を実際のヘッダファイルの内容に置き換えたり、マクロやインライン関数を定義値に置換したりする処理のことである。
【0020】
行数集計部220は、コード展開部210から展開後のソースプログラム100のデータを受け取り、展開したソースプログラムの手続部の行数を順番にカウントする。行数集計部220は、コメント記号等を用いて、上記カウントした行数情報をソースプログラムに埋め込んだ行数情報付き展開済みソースプログラム(前処理済みソースプログラム)110を生成・出力する。
【0021】
図3は、上記行数情報付き展開済みソースプログラム(前処理済みソースプログラム)110を模式的に表した図である。図3の例では、行数情報付き展開済みソースプログラム(前処理済みソースプログラム)110の先頭に、ソースプログラム100および上記展開時に置き換えられたヘッダファイルを含む各ソースプログラムの手続き部の行数の合計が記録され、その後に、各ソースプログラムの手続き部の行数が、番号1〜nの順番で記録されている。
【0022】
図2は、上記した行数情報付き展開済みソースプログラム(前処理済みソースプログラム)110を用いてコンパイル処理を行うコンパイル処理部の構成を表したブロック図である。
【0023】
図2を参照すると、行数取得部310とコンパイル時間計算部320と、コンパイルの残り所要時間を計算するために用いる計算モデル330と、コンパイル実行部340と、コンパイル開始からの経過時間を計測する処理時間計測タイマ350とを備えたコンパイル処理部300が示されている。
【0024】
行数取得部310は、行数情報付き展開済みソースプログラム(前処理済みソースプログラム)110から、これからコンパイルしようとしている部分のソースの行数情報を取得する。
【0025】
コンパイル時間計算部320は、行数情報付き展開済みソースプログラム(前処理済みソースプログラム)110から、すべてのソースプログラムの行数情報と、そのうちのコンパイル済みの行数情報、コンパイル開始からの経過時間と、を計算モデル330に与えてコンパイルの残り所要時間を計算する。さらに、コンパイル時間計算部320は、現在時刻にコンパイル残り所要時間を加えたものを終了予測時刻とし、利用者端末400に表示する。またこのとき、コンパイル時間計算部320は、「あとXX分でコンパイルが終了します。」というように、コンパイルの残り所要時間を表示するものとしてもよい。
【0026】
上記計算モデル330としては、次式[数1]のものを用いることができる。図4は、計算モデル330の各変数をまとめたものである。
【0027】
【数1】

【0028】
また、上記[数1]は、次式のように書き換えることができる。
【0029】
【数2】

【0030】
コンパイル実行部340は、行数情報付き展開済みソースプログラム(前処理済みソースプログラム)110のコンパイル処理を行い、オブジェクトプログラム120に変換し、出力する。コンパイル時間計算部320で計算したコンパイル残り時間は、また、コンパイル実行部340は、1本のソースプログラムのコンパイルを行う度に、処理時間計測タイマ350で計測したコンパイル開始からの経過時間を計算モデル330へフィードバックし、次のコンパイル時のコンパイル残り所要時間の計算データとして使用させる。
【0031】
なお、前記したコンパイル時間計算部320およびコンパイル実行部340は、コンパイル装置を構成するコンピュータに上記した処理を実行させるプログラムにより実現することができる。
【0032】
続いて、本実施形態の動作について図面を参照して詳細に説明する。まず、図1に示すとおり、コンパイル前処理部200は、ソースプログラム100を入力データとして受け取る。
【0033】
次にコード展開部210が、ソースプログラム100の展開処理を行ない行数集計部220に入力する。
【0034】
次に行数集計部220は、展開されたソースプログラムの手続き部の行数をカウントし、カウントした行数情報を埋め込んだ行数情報付き展開済みソースプログラム(前処理済みソースプログラム)110を生成・出力する。
【0035】
次に、コンパイル処理部300は、図2に示すとおり、行数情報付き展開済みソースプログラム(前処理済みソースプログラム)110を入力データとして受け取る。
【0036】
次に、行数取得部310が、前記行数情報付き展開済みソースプログラム(前処理済みソースプログラム)110にコメント等として埋め込まれた行数情報を参照し、すべてのソースプログラムの行数情報と、これからコンパイルしようとしている部分のソースプログラムの行数情報を取得する。
【0037】
コンパイル時間計算部320では、すべてのソースプログラムの行数情報、すでにコンパイル済みの行数情報およびコンパイル実行部340からフィードバックされたコンパイル開始からの経過時間を計算モデル330に与えてコンパイルの残り所要時間を計算する。更に、コンパイル時間計算部320では、現在時刻にコンパイル残り所要時間を加えた時刻を終了予測時間とし、利用者端末400に表示する。
【0038】
コンパイル実行部340は、前記行数情報付き展開済みソースプログラム(前処理済みソースプログラム)110のコンパイル処理を行い、オブジェクトプログラムに変換・出力する。コンパイル実行部340は、一のソースプログラムのコンパイルが完了する度に、処理時間計測タイマ350で実行時間を計測し、計算モデル330へフィードバックし、次のタイミングでのコンパイル残り時間の計算データとして使用させる。
【0039】
以上のように本発明の第1の実施形態によれば、コンパイル開始時あるいはコンパイル中の任意の時点で、ユーザに、コンパイル残り所要時間を知らせることが可能となる。このコンパイル残り所要時間は、展開済みソースプログラムに含まれる個々のソースプログラムの行数とコンパイル所要時間を用いて算出した実際のコンパイルの処理速度により再計算されるため、システムの負荷状況を反映したものとなる。
【0040】
さらに本発明の第1の実施形態によれば、実際のコンパイル所要時間に基づいて、一行当たりのコンパイル処理速度を随時見直し、終了予測時間を計算するため、仕様の違うコンピュータで実行する場合でも、コンピュータごとに計算モデルを調整する必要がないという効果が得られる。
【0041】
以上、本発明の実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した実施形態のコンパイル前処理部200およびコンパイル処理部300の構成は、適宜変更することが可能である。例えば、上記したコンパイル処理部300のコンパイル時間計算部320と、コンパイル実行部340とを入れ替えても、上記した実施形態と同様の作用効果を得ることができる。
【0042】
また、上記した実施形態では、行数情報をソースプログラムに埋め込むものとして説明したが、コンパイル時間計算部320が参照できるファイル等に行数情報を格納する構成も採用することが可能である。
【0043】
また、上記した実施形態では、コンパイル前処理部200とコンパイル処理部300とを別々に説明したが、同一のコンピュータを、コンパイル前処理部200及びコンパイル処理部300として機能させ、コンパイル前処理とコンパイル処理を連続して実行させることも可能である。また、一のコンピュータを用いて、いくつかのソースプログラムのコンパイル前処理をまとめて実行しておき、他のコンピュータに、コンパイル処理を実行させることも可能である。
【符号の説明】
【0044】
100 ソースプログラム
110 行数情報付き展開済みソースプログラム(前処理済みソースプログラム)
120 オブジェクトプログラム
200 コンパイル前処理部
210 コード展開部
220 行数集計部
300 コンパイル処理部
310 行数取得部
320 コンパイル時間計算部
330 計算モデル
340 コンパイル実行部
350 処理時間計測タイマ
400 利用者端末

【特許請求の範囲】
【請求項1】
入力されたソースプログラムを展開した展開済みソースプログラムのコンパイル中に所定の時間間隔で、前記展開済みソースプログラムのうちのコンパイル済みの行数と、コンパイル開始からの経過時間と、前記展開済みソースプログラムのうちのコンパイルが済んでいない行数と、を用いて、コンパイルの終了までの残り時間を算出して、表示装置に表示するコンパイル時間計算部を含むコンパイル処理部を備えるコンパイル装置。
【請求項2】
さらに、入力されたソースプログラムを展開し、展開済みソースプログラムを生成するコンパイル前処理部を備える請求項1のコンパイル装置。
【請求項3】
前記コンパイル前処理部は、前記展開済みソースプログラムの総行数を算出し、前記展開済みソースプログラムのいずれかの箇所に記録しておき、
前記コンパイル時間計算部は、前記展開済みソースプログラムに記録された前記展開済みソースプログラムの総行数を用いて、前記展開済みソースプログラムのコンパイル所要時間を求め、前記コンパイル所要時間からコンパイル開始からの経過時間を差し引くことにより、コンパイルの終了までの残り時間を算出する請求項2のコンパイル装置。
【請求項4】
前記コンパイル時間計算部は、前記展開済みソースプログラムに含まれるソースプログラムの個数をn個、そのうちのコンパイル済みのソースプログラムに与えられた番号をjとする次式の計算モデルを用い、
前記コンパイル済みのソースプログラムの手続き部の行数L、L2、・・・、Lの和と、前記コンパイル済みのソースプログラムのコンパイル所要時間T、T2、・・・、Tの和と、から求めた一行あたりのコンパイル処理速度に、前記展開済みソースプログラムのコンパイルが済んでいない行数Lj+1、Lj+2、・・・、Lの和を乗じて、現時点からコンパイルの終了までの残り時間RTを算出する請求項1または2のコンパイル装置。
【数1】

【請求項5】
前記コンパイル前処理部は、前記n個のソースプログラムの行数L、L2、・・・、Lを算出し、前記展開済みソースプログラムのいずれかの箇所にそれぞれ記録しておき、
前記コンパイル時間計算部は、前記n個のソースプログラムの行数L、L2、・・・、Lを用いて、前記展開済みソースプログラムのコンパイル所要時間を求め、コンパイル所要時間からコンパイル開始からの経過時間を差し引くことにより、コンパイルの終了までの残り時間を算出する請求項4のコンパイル装置。
【請求項6】
入力されたソースプログラムを予め展開した展開済みソースプログラムのうちのコンパイル済みの行数と、コンパイル開始からの経過時間と、前記展開済みソースプログラムのうちのコンパイルが済んでいない行数と、を用いてコンパイルの終了までの残り時間を算出し、表示装置に表示する処理をコンパイラが作動しているコンピュータに所定の時間間隔で実行させるプログラム。
【請求項7】
入力されたソースプログラムを予め展開した展開済みソースプログラムのうちのコンパイル済みの行数と、コンパイル開始からの経過時間と、前記展開済みソースプログラムのうちのコンパイルが済んでいない行数と、を用いてコンパイルの終了までの残り時間を所定の時間間隔で算出するステップと、
前記コンパイルの終了までの残り時間を表示装置に表示するステップとを含む、コンパイルの終了までの残り時間の表示方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2010−191617(P2010−191617A)
【公開日】平成22年9月2日(2010.9.2)
【国際特許分類】
【出願番号】特願2009−34300(P2009−34300)
【出願日】平成21年2月17日(2009.2.17)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】