1
3dwelcome 2021-07-27 17:00:29 +08:00
你有没有想过,为什么刚好是 22ms,而不是 21ms 或者 23ms?
答案就是测量用时 API 精度的问题。 WinAPI 运行耗时都差不多的。 |
2
596164296 OP @3dwelcome 感谢你的回复,我用的统计时间的语句为:int(round(time.time() * 1000)),精确到毫秒,我在多次测试中发现,是 22ms 左右,并不是总是 22ms,有 5ms 、7ms 、8ms 、9ms 、12ms 、15ms 、17ms 、21ms 、22ms 、25ms 甚至三十几 ms 都有,并且该代码在性能越好的电脑上时间越短,并且我之前用 c 语言测试过(很久之前了),同样是这样的情况,如果有更好的测量时间的方法,望提示,我将去试一试
|
3
3dwelcome 2021-07-27 17:12:30 +08:00
用这个 API
https://docs.microsoft.com/zh-cn/windows/win32/sysinfo/acquiring-high-resolution-time-stamps 我实际用下来的经验是,先别说需要测量的 API,光这个 Win32 查询时间函数,自己调用也挺费周期数的。 |
4
xupefei 2021-07-27 17:16:37 +08:00 via iPhone
|
5
billlee 2021-07-27 21:12:53 +08:00
还不知道你在干什么,windows 是个多任务抢占式调度的操作系统,正常情况下花的时间就是不一样
|
6
nuk 2021-07-28 12:01:44 +08:00
应该是等队列里的消息被 poll 吧,你把屏幕的刷新率调整一下看看时间是不是会变。。
|