1

タイムスタンプを送信している別のマシンへのソケット クライアントである C++ プロジェクトを持つマシンがあります。これは、午前 0 時からのミリ秒数を表す unsigned int です。

unsigned int time;

この時間値をシステム時間と比較して、ミリ秒単位で 2 つの間の差を取得するにはどうすればよいですか? スプレッドは、時間の経過とともに「比較的」一定である必要があります。

システム時間の精度は 1 ミリ秒以内である必要があります。スプレッドが (たとえば) 20 ミリ秒に広がった場合、何かがおかしいことがわかり、コードが認識する必要があるからです。

私は Windows.h を使用できます。アドバイスやサンプル コードもお待ちしております。

ありがとう!!

4

1 に答える 1

1

おそらくこれはあなたを助けるでしょう。私は学校で行ったプロジェクトでこれを使用して、部分列の最大和を計算するためのいくつかのアルゴリズムの効率を比較しました。これは、Windows.h に含まれている関数 QueryPerformanceCounter を利用するクラスであり、サブミリ秒の範囲で正確であると信じています。これは、Windows.h を使用して C++ で行うことができる最も正確な方法でした。

gpufrustrum という Google Code のオープンソース プロジェクトから入手しました。

#include <windows.h>

class CPrecisionTimer
{
  LARGE_INTEGER lFreq, lStart;

public:
  CPrecisionTimer()
  {
    QueryPerformanceFrequency(&lFreq);
  }

  inline void Start()
  {
    QueryPerformanceCounter(&lStart);
  }

  inline double Stop()
  {
    // Return duration in seconds...
    LARGE_INTEGER lEnd;
    QueryPerformanceCounter(&lEnd);
    return (double(lEnd.QuadPart - lStart.QuadPart) / lFreq.QuadPart);
  }
};
于 2012-06-22T02:17:34.170 に答える