必勝のために必要な時間

じゃんけんに勝つために必要な時間
画像処理の時間はどのくらいかかるのだろう。
  1. COMポートの文字を送ってから5指ロボットがグーやチョキを出すまでの時間
  2. 判定からCOMポートに文字を送るまでの時間
  3. 遊んでる時間があったらまじめに実習する(笑い)
マシンにはあまい負荷をかけたくない。
2の方の対策
  • 新しい構成のパソコンを買う
  • 画面の表示を極力無くす
  • コンソールの出力を極力無くす
  • タスクマネージャでCPU時間、メモリを使っているアプリケーションを止める
  • なんかあるかな?
考察する場合は、タスクマネージャ、時間を計測する
タスクマネージャはCPU時間を降順にならべるとか、I/Oも結構負担がかかるのでこれも見るといい。
時間の計測はソースコードに時間を測れるように書き込む。
Win32 APIのGetTickCount関数を使った例
#include<stdio.h>
#include<windows.h>

int
main (void)
{
  DWORD start;

  for (int i = 0; i < 50; ++i)
    {
      start = GetTickCount ();
      Sleep (100);//本来ここに処理コードをはさむ。ここではSleepでごまかす
      printf ("%dms,", GetTickCount () - start);
    }
  return 0;
}

C:\usr\opencv\C_C++の練習\gettickcount>cl main.cpp
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.

main.cpp
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.

/out:main.exe
main.obj

C:\usr\opencv\C_C++の練習\gettickcount>main
93ms,94ms,109ms,94ms,110ms,93ms,110ms,93ms,94ms,110ms,93ms,110ms,93ms,110ms,94ms,109ms,94m
s,93ms,110ms,94ms,109ms,94ms,109ms,94ms,94ms,109ms,94ms,109ms,94ms,109ms,94ms,109ms,94ms,9
4ms,109ms,94ms,109ms,94ms,109ms,94ms,94ms,109ms,94ms,109ms,94ms,110ms,93ms,110ms,93ms,94ms
,
C:\usr\opencv\C_C++の練習\gettickcount>
Sleep自体は結構めちゃくちゃにスリープしている?CetTickCountの方が正しい?1ms単位で計測はできそう。
timeGetTimeもある。この方が正確だそうだ。
コンパイル時にwinmm.libが必要だ。上のコードのGetTickCountをtimeGetTimeに書き換えて実行してみる。
C:\usr\opencv\C_C++の練習\gettickcount>cl main.cpp winmm.lib
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.

main.cpp
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.

/out:main.exe
main.obj
winmm.lib

C:\usr\opencv\C_C++の練習\gettickcount>main
101ms,101ms,100ms,101ms,100ms,101ms,101ms,100ms,101ms,100ms,101ms,100ms,101ms,101ms,100ms,
101ms,100ms,101ms,101ms,100ms,101ms,100ms,101ms,101ms,100ms,101ms,100ms,101ms,100ms,101ms,
101ms,100ms,101ms,100ms,101ms,101ms,100ms,101ms,100ms,101ms,100ms,101ms,101ms,100ms,101ms,
100ms,101ms,101ms,100ms,101ms,
C:\usr\opencv\C_C++の練習\gettickcount>
Sleepはあいかわらずだが、1ms程度の誤差。やはりこちらが正確だ。でも今回は1msを競う状況ではないのでどちらでもいい。
名前:
コメント:
「今日の訪問数: -
「昨日の訪問数: -
「今までの訪問数: -
最終更新:2010年02月11日 16:25
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。