2011-07-18 54 views
3

我正在写一个Windows应用程序,它在地图上显示实时数据。有没有简单的方法来获得FPS(帧每秒)?Windows窗体,获取FPS?

谢谢,在google上找不到太多东西。这是C#,.NET 4.0。

+0

你用什么类型的数据在地图上显示?你能否请进一步解释一下。 –

+0

我通过第三方使用购买的映射控件。我们以每秒30次的速度在全国范围内显示实时功耗。 – dave2118

回答

3

计算FPS可能是这么简单的东西(如果精度不是到极点的重要性):

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; 
} 

设置的更新计时器调用GetFps()每第二要获得价值。请注意,此方法不应该有并发呼叫,因为每个呼叫都会重置计数器并启动时间。

+0

谢谢!我不需要它具体,但某种基准。 – dave2118

+0

@ dave2118:这是一个相当快速和线程不安全的例子。如果不同的线程同时使用这些方法,则应该使用'Interlocked'类来确保线程安全(我已经更新了示例)。 – Groo

0

你是如何绘制你的地图?这一切都取决于您使用的是什么技术......如果您正在进行图形密集型工作,我的推荐工作将用于托管DirectX。

试图让这里更多的信息:http://www.programmersheaven.com/2/time-fps

+0

你的链接已经死亡。 – LarsTech