WindowsのVCCでは以下のようなのを使っていた。
#include <time .h>
clock_t start, end;
start = clock();
/* 計測対象処理 */
end = clock();
std::cout <<"exit:" << end - start << "ms" << std::endl;
これがLinux用では以下のように書いた。#include <time .h>
見て分かるようにちょとしたテスト用のコードなので大体の時間が正しく出てれば良し。struct timespec start, end; clock_gettime(CLOCK_MONOTONIC, &start); /* 計測対象処理 */ clock_gettime(CLOCK_MONOTONIC, &end); long milliSec = (end.tv_sec*1000 + end.tv_nsec/1000000) - (start.tv_sec*1000 + start.tv_nsec/1000000); std::cout <<"exit:" <<
milliSec
<< "ms" << std::endl;
Windowsではclock()という関数でlong値(time_t値)で経過ミリ秒が取得されるので何も難しくなかった。
Linuxではclock_gettime()という関数にtimespecという構造体を渡して経過時間をセットする。
timespecではtv_secには秒が入り、tv_nsecにはナノ秒が入る。
よく分かんなかったが、何秒+何ナノ秒というように合算するものらしい(ナノ秒部分は1秒に達すると0に戻る)。
秒は1000を掛け、ナノ秒は下位6桁を切り捨て、足し合わせてミリ秒にしている。
終了時刻から開始時刻を引いて経過時間を出力する。
0 件のコメント:
コメントを投稿