2011-07-18 10 views
3

私はマップ上にリアルタイムデータを表示しているWindowsアプリケーションを書いています。 FPS(Frames Per Second)を取得する簡単な方法はありますか?Windowsフォーム、FPSを取得していますか?

ありがとうございました、Googleで多くを見つけることができませんでした。これはC#、.NET 4.0です。

+0

マップに表示するデータの種類は?それをさらに説明してください。 –

+0

購入したマッピングコントロールを第三者を通じて使用しています。私たちは全国のリアルタイム電力消費量を毎秒30回表示しています。 – dave2118

答えて

3

(精度がuttermost重要ではない場合)FPSは、このような単純なものかもしれ計算:

すべての GetFps()を呼び出すための更新タイマーを設定し
DateTime _lastCheckTime = DateTime.Now; 
long _frameCount = 0; 

// called whenever a map is updated 
void OnMapUpdated() 
{ 
    Interlocked.Increment(ref _frameCount); 
} 

// called every once in a while 
double GetFps() 
{ 
    double secondsElapsed = (DateTime.Now - _lastCheckTime).TotalSeconds; 
    long count = Interlocked.Exchange(ref _frameCount, 0); 
    double fps = count/secondsElapsed; 
    _lastCheckTime = DateTime.Now; 
    return fps; 
} 

値を取得する秒。すべての呼び出しがカウンタと開始時刻をリセットするので、このメソッドへの同時呼び出しは存在しないはずです。

+0

ありがとう!私はそれを具体的にする必要はありませんが、ベンチマークのようなものです。 – dave2118

+0

@ dave2118:かなり速くてスレッドセーフではない例でした。これらのメソッドを別々にスレッド化する場合は、 'Interlocked'クラスを使用してスレッドの安全性を確保する必要があります(例を更新しました)。 – Groo

0

どのようにマップを描画していますか?それはすべてあなたが使用している技術に依存しています...あなたがグラフィックの集中的な仕事をしているなら、私の推薦は管理されたDirectXに向いています。

は、ここに詳細情報を取得してください:http://www.programmersheaven.com/2/time-fps

+0

あなたのリンクは亡くなりました。 – LarsTech

関連する問題