|
処理速度の計測について †対応: 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 †コメント欄 † |