処理速度の計測について

対応: CAT709, CAT760, i386PC等全て

質問

処理速度はどのように計測するのか

回答

Cライブラリにclock()関数があり、プロセスの処理時間を得ることが出来ます。以下にサンプルプログラムを載せます。

#include <stdio.h>
#include <time.h>

/*-------------------------------------------------------------------
   ある処理部分の実際の処理時間を得ます。
   ただしほとんどのlinuxでは10msec単位に切り捨てられます。
-------------------------------------------------------------------*/


/*-------------------------------------------------------------------
CLOCK(3)              Linux Programmer's Manual              CLOCK(3)

名前
       clock - プロセッサ時間の取得
書式
       #include <time.h>
       clock_t clock(void);
説明
       clock() はプログラムの使用したプロセッサ時間の近似値を返す。
返り値
       返り値はそのままでは clock_t としてのCPU時間である。秒単位での
       値を得るためには CLOCKS_PER_SEC で割る.使用したプロセッサ時間
       が 得 ら れ ない場合や、その値を表現できない場合にはこの関数は
       (clock_t)-1 を返す。
準拠
       ANSI C。 POSIX は実際の精度に は よ ら ず  CLOCKS_PER_SEC   が
       1000000 であることを要求している。
-------------------------------------------------------------------*/

int dummy_function(void){
	int i,x=0;
	for(i=0;i<1000000;i++)
		x*=i;
	return x;
}


int main(int argc, char *argv[]){
	clock_t	start,end;

	start = clock();
	dummy_function();
	end   = clock();
	printf("CPU time =%d (msec)\n",(end-start)*1000/CLOCKS_PER_SEC);
}

ただしclock()で得られるのはプロセスの処理時間です。UNIXはマルチタスクOSですので、例えば 自作ソフト→他のデーモンプロセス→自作ソフト のようにプリエンプションは非同期で行われる可能性があります。上記で得られた値は自作ソフト部分の走行時間のみです。

関連LINK

コメント欄

Last-modified: 2006-02-07 (火) 18:03:46 (7094d)