.NET Windows Form 里面的 Timer 控件 真实间隔测试
以下是根据 GDI+ 双缓冲利用计时器绘图的实测
环境:C# 窗体应用程序 (.NET 4.0)
无实际内容,仅纯色
Timer 设定值和实际更新时间间隔表:
一个数字的表示它能长时间保持,两个数字的表示它会比较频繁地波动。
01 ~ 15ms: 64FPS
_____16ms: 40FPS
17 ~ 31ms: 32FPS
_____32ms: 24FPS
33 ~ 46ms: 21,22FPS
_____47ms: 20FPS
48 ~ 62ms: 16FPS
_____63ms: 13,14FPS
64 ~ 78ms: 12,13FPS
79 ~ 93ms: 10,11FPS
_____94ms: 10FPS
结论:
⒈在上述范围内 设定为 1、10、15毫秒都不能改变 Timer 的刷新时间,全部稳定在64次/秒
⒉很多时候,帧数 * 设定时间并不等于 1000,且误差较大。因此 Timer 控件不适合用来累计计时。
⒊Timer控件运行间隔和操作系统、窗口线程优先级、CPU频率可能存在关系。
关于 游戏制作:
GDI+双缓冲可以制作UI界面和小游戏,64帧的刷新率足够了,但要注意绘制内容不能太多。
具体取决于机器CPU性能,一般来说超过800x800的图像和超过1000个字就会对更新时间有影响,一般会从60帧降到30帧左右。
采取局部更新的设计可以提高性能。
将游戏逻辑丢到另外线程中处理可以减少对主窗口 UI 帧数的压力。 例如 System.Timer.Timer (不过我尚未尝试)


浙公网安备 33010602011771号