网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月18日漏签0天
vb吧 关注:156,149贴子:1,166,087
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 8回复贴,共1页
<<返回vb吧
>0< 加载中...

谁有办法精确到1s中的0.0001s

  • 只看楼主
  • 收藏

  • 回复
  • Noble二代队长
  • 数据类型
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
timer事件可以精确到0.001s,有没有办法不放大时间情况下精确到0.0001s


  • Chino
  • API
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
对于精确度要求特高的定时可以用QueryPerformanceFrequency和QueryPerformanceCounter函数实现、它可以精确到微秒。。。这是C++宝典上写的


2025-05-18 10:25:17
广告
  • gam2046
  • 简易程序
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
同楼上、另据坊间传闻、timer无论数字设置的多小、两次事件触发间隔最小为十八分之一秒、我表示没有研究过


  • 曼曼芮资
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
2楼正解!
Windows系统每秒触发18个时钟中断,timer就靠这个来计时,说以timer的精确度位55.6毫秒
说以也要精确到0.0001s得用其他的方式。。。。。。。。。


  • itianda
  • 简易程序
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
学习了…


  • sexfiowd
  • 啥也不懂
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
NtQueryPerformanceCounter MSDN上说不能用哦


  • itianda
  • 简易程序
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
nt开头的函数会在新版本windows中发生变化,使用去掉nt的经过封装的函数可以提高程序兼容性…


  • Ultraman_King
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Timer 使用 Windows 的 WM_TIMER 实现,内部也要遵循时钟周期的精度,而时钟周期的精度也是直接影响任务调度的因素,如果精度过高,那么中断处理程序将会大量占用 CPU 时间片,从而导致其它进程无法正确运行,因此现代抢占式多任务操作系统的时间周期的精度通常都是几十个毫秒,这样可以允许进程得到充分的时间片运行,因此事实上 Timer 根本不可能精确到 0.0001s,而是和 Windows 的时钟中断精度相一致,通常在几十个毫秒,随着不同版本的不同配置(如 Server OS 和 PC OS 就不同,Linux 等的配置也有所不同)可能会有不同,但数量级一定都是在几十个毫秒,否则进程得到的时间片将非常少。(也就是使用 Linux 下的 time 命令得到的用户时间和系统时间的比例会不协调)
QueryPerformanceCounter() 是用于提高精度的方法,因为在 Intel 架构的 CPU 下它是调用 IA32 的指令 rdtsc 来实现的,在其它架构的 CPU 中会用其它方法。在 Ring0 下的操作系统内核程序也可以使用等价的 rdmsr 来读取 MSR 寄存器,也就是时间计数器,这两条指令的级别一般都是微秒级的,而且随着不同的 CPU 有不同的意义,数量级都是微秒。
但是还是由于抢占式多任务操作系统的关系,Windows 事实上由于多任务的调度和多种中断尤其是时钟中断的处理关系,这个 API 或汇编指令能够达到的精度也是十分有限,同时也十分不稳定。在不同的系统负载下会有很不同的表现,差距甚至可以达到几十倍。
综上,如果只是大致需要精确到 0.00001s(例如流媒体播放),那用 QueryPerformanceCounter() 或者 rdtsc 指令都是可以的,但是如果是用于严格的时间控制(例如医院中的生命体征监控系统),那么一定不要用 Windows 这样的多任务抢占式操作系统,而要使用相应的实时操作系统(Real-time OS),实时系统允许程序员完全控制 CPU 的周期,甚至可以协调不同硬件时间的周期频率,达到完全精确的记时。


2025-05-18 10:19:17
广告
  • Noble二代队长
  • 数据类型
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
恩,看来我一直都搞错了,我还以为timer事件可以到0.001s呢。。。
以前用过rdtsc做过统计cpu频率的算法,但如果用于判断高精度时间的话似乎误差很大,至少我的算法是这样的。
好吧,试试QueryPerformanceCounter


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 8回复贴,共1页
<<返回vb吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示