処理時間の測定について
Re:処理時間の測定について
おおまかな計測でよいのであれば、ストップウォッチを使ってください。
高い精度が必要なら、最初と最後に出力ポートに書き込んで、オシロスコープ等を使って計測してください。
高い精度が必要なら、最初と最後に出力ポートに書き込んで、オシロスコープ等を使って計測してください。
Re:処理時間の測定について
メジャーな所で言うと、clock関数かgettimeofdayを使えばよさそうです。
時間を測定するサンプルを書いてみました。
clockというのはプログラムが開始してからの経過時間なので、常に増え続けます。
測定したい開始時点で一度記憶し、その差分で時間を測定します。
gettimeofdayと両方使い方がこの辺に乗っていますので参考にどうぞ。
http://kzk9.net/column/time.html
clock関数の帰り値がマイクロ秒であると、確か(プログラムを開始してから)一時間ちょっと位しか測れないので、
もし長時間の測定の場合で環境がLinuxなどであれば注意が必要かもしれません。
時間を測定するサンプルを書いてみました。
#include <stdio.h> #include <time.h> int main(){ int t = clock(); getchar(); printf("%.3f秒\n",(double)(clock()-t)/CLOCKS_PER_SEC); return 0; }エンターを入力すると、プログラムを開始してからの秒数が表示されます。
clockというのはプログラムが開始してからの経過時間なので、常に増え続けます。
測定したい開始時点で一度記憶し、その差分で時間を測定します。
gettimeofdayと両方使い方がこの辺に乗っていますので参考にどうぞ。
http://kzk9.net/column/time.html
clock関数の帰り値がマイクロ秒であると、確か(プログラムを開始してから)一時間ちょっと位しか測れないので、
もし長時間の測定の場合で環境がLinuxなどであれば注意が必要かもしれません。
Re:処理時間の測定について
たかぎさんがストップウォッチっていうのは、れこしゃさんが、環境などを何も書いていないからです。
環境によっては、長時間なら長時間なりに、ストップウオッチを使わなくてもおおまかな測定はできます。
例え、OSのないPICマイコンでもね。
環境によっては、長時間なら長時間なりに、ストップウオッチを使わなくてもおおまかな測定はできます。
例え、OSのないPICマイコンでもね。
Re:処理時間の測定について
> 短時間の詳細な測定にはclock関数を使おうと思います。
clock関数はCPU使用時間を返すものなので、実時間が欲しいときに使うのは不適切です。
また、clock関数が使えない、または常に(clock_t)-1を返す環境もあります。
clock関数はCPU使用時間を返すものなので、実時間が欲しいときに使うのは不適切です。
また、clock関数が使えない、または常に(clock_t)-1を返す環境もあります。
Re:処理時間の測定について
timeGetTime関数を使えばおおよその時間が出ます。
10万回カウントアップし続けた秒数です。
intel Pentium 4 HT/メモリ:512MBの環境では98秒と出ました
10万回カウントアップし続けた秒数です。
intel Pentium 4 HT/メモリ:512MBの環境では98秒と出ました
#include <stdio.h> #include <windows.h> //DWORD型を使うため必要 #include <mmsystem.h> //timeGetTimeを使うため必須 #pragma comment(lib,"winmm.lib") //timeGetTimeを使うため必須 int main(void) { //timeGetTimeの精度を上げる(Windows98用) timeBeginPeriod(1); double cnt = 0; DWORD now = timeGetTime(); for(int i = 0; i < 10000000; i++) { cnt++; } printf("浮動小数点10万回計算の秒数:%d秒\n", timeGetTime() - now ); timeEndPeriod(1); return 0; }