経過実時間(Elapsed Real Time)とは、
コンピュータプログラムが開始されてから終了するまでに実際に経過した時間のことを指します。これは、プログラムの実行開始時刻と終了時刻の差として算出され、私たちが普段、壁にかかった時計で測る時間と一致するため、ウォール・クロック・タイム(Wall-Clock Time, WCT)やウォール・タイム(Wall Time)とも呼ばれます。また、単に実時間(Real Time)と表現されることもありますが、この言葉は「入力データの処理が瞬時に行われること」を意味する
リアルタイムシステムという文脈でも使われるため、注意が必要です。
経過実時間は、プログラムの実行に要した時間全体を表すため、しばしば実行時間や経過時間といった言葉と混同されがちですが、特に
CPU時間とは明確に区別する必要があります。
CPU時間とは、プログラムが
CPU(中央処理装置)によって実際に処理された時間の合計であり、経過実時間とは異なり、
CPUがアイドル状態であったり、他の処理が実行されていた時間は含まれません。
経過実時間には、
CPU時間が含まれるのはもちろんのこと、プログラムが何らかの理由で一時停止したり、リソースが利用可能になるまで待機していた時間など、
CPUが直接処理に関与していない時間も含まれます。これらの要因は、プログラムが実行される環境(アーキテクチャ)や、実行時に利用されるランタイム環境に大きく依存します。
例えば、プログラムがファイルからの読み込みを待機している時間や、ネットワーク接続が確立されるまで待機している時間などは、
CPU時間には含まれませんが、経過実時間には含まれます。また、複数の処理が同時に実行されるマルチスレッド環境では、各スレッドが
CPUを使用するタイミングが異なるため、
CPU時間の合計が経過実時間よりも長くなる場合があります。
逆に、非常に多くの
CPUを同時に利用して並列処理を行うプログラムの場合、
CPU時間が経過実時間の何倍にもなることがあります。これは、各
CPUが同時に処理を実行しているため、
CPU時間の合計が非常に大きくなる一方で、実際にプログラムが終了するまでの時間はそれほど長くならないためです。
コンピュータシミュレーションの分野では、経過実時間という言葉は、シミュレーション内で表現される時間と、実際の処理にかかった時間を区別するために非常に重要です。例えば、シミュレーション内では何十年、何百年という時間が経過しているとしても、実際の処理にかかる時間は数分、数時間といった単位になります。経過実時間を用いることで、シミュレーション結果の時間軸と、シミュレーションを実際に行うために必要な時間を明確に区別できます。
このように、経過実時間は、プログラムのパフォーマンスを評価したり、実行環境を比較したりする上で非常に重要な指標となります。特に、実世界とのインタラクションが重要な
リアルタイムシステムや、並列処理を多用するシステムにおいては、経過実時間を正確に把握することが不可欠となります。