社区
VB基础类
帖子详情
如何取得精确的系统时间?
leoxue
2003-05-02 02:54:16
如何取得精确的系统时间?
我想要取得执行一段代码所用去的时间,但time好像只能精确到秒,我想能够得到精确到毫秒的时间,有什么办法可以吗?
...全文
77
7
打赏
收藏
如何取得精确的系统时间?
如何取得精确的系统时间? 我想要取得执行一段代码所用去的时间,但time好像只能精确到秒,我想能够得到精确到毫秒的时间,有什么办法可以吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
胖河马
2003-05-02
打赏
举报
回复
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Sub Form_Load()
Dim i As Long
Dim t As Long
Dim tmp As String
t = GetTickCount
For i = 1 To 10000
tmp = tmp & "a"
Next i
Debug.Print GetTickCount - t
End Sub
或者
Private Sub Form_Load()
Dim i As Long
Dim t As Single
Dim tmp As String
t = Timer
For i = 1 To 10000
tmp = tmp & "a"
Next i
Debug.Print Timer - t
End Sub
sealtles
2003-05-02
打赏
举报
回复
当然使用API函数GetSystemTime更方便了,可以在代码执行前和执行后各执行一次GetSystemTime,得到的参数lpSystemTime是一个自定义类型的数据,其中有年、月、日、星期、分钟、秒、毫秒,使用毫秒就可以了。
gardenia
2003-05-02
打赏
举报
回复
使用API函数GetSystemTime
Declare Sub GetSystemTime Lib "kernel32" Alias "GetSystemTime" (lpSystemTime As SYSTEMTIME)
sundylong
2003-05-02
打赏
举报
回复
timer控件是有误差,但是,可不可以消除误差?比如,用多试验几次的方法,在interval定义到毫秒的时候,得到时间分布阿.
lihonggen0
2003-05-02
打赏
举报
回复
Timer控件的使用
VB编程过程中,通过引发Timer事件,Timer控件可以有规律地间隔一段时间执行一次代码。Interval属性是Timer控件最重要的一个属性,它以千分之一秒为单位指定Timer事件之间的间隔,理论上可以认为最少可设置为1毫秒触发一次Timer事件,另外一个重要属性是Enabled属性,它决定计时器是否开始工作。因为Timer控件响应时间的流逝,独立于用户,可以成为编程者的“好帮手”,所以在实践中很受欢迎,但编程者特别是初学者在实际使用过程中往往会感觉到“力不从心”,下面笔者将通过分析并结合自己的编程体会谈谈Timer控件使用中的几个误区。
1、编程中过于相信Interval属性值的准确性
这是初学者易犯的错误,其实Interval属性值只是一个参考值,其准确性低,因而间隔不一定准确。Timer控件是基于Windows消息WM_TIME的时钟脉冲发生器,系统每秒生成18个时钟信号,所以即使用毫秒衡量Interval属性,间隔的实际精度不会超过1/18秒,换句话说,Timer控件能够精确设置的最短时间是65.6毫秒,如果要使时间间隔更精确,应让定时器检查系统时钟。
2、Interval属性的取值范围
Interval属性的有效值在0至65535之间,这就意味着即使最长时间间隔也只是65.6秒,比一分钟长不了多少,而且VB只有在Interval属性值大于0时,才会产生Timer事件,这是要 特别注意的地方。
3、Timer控件的功能定位出错
Timer事件是周期性的,Interval属性主要是决定“多少次”而非“多久”,所以一般不用于计时,而是用做计数。笔者曾做过实验,把Interval值分别设为1000和60000,即把间隔时间分别设为一秒钟和一分钟,做成一个计时器,并把工作结果和系统
标。准时间比较,误差分别是6.7%和1.7%,可见定时器事件生成越频繁,响应事件所用的处理越多,越将降低系统综合性能,从而导致误差增大,这么大的误差显然失去了用做计时的意义。
4、计数器变量的声明错误
在设计计数器时最易犯的错误是不声明变量或在区域变量中声明。将Interval属性设为1000,看看下面这个程序:
Private Sub Timer1_timer()
Dim i as integer
i=i+1
print I
End Sub
也许有读者可能想通过这段程序,能打印出1,2……n,而事实上只能打印出1,1……1来,原因在于每个时间间隔内,按顺序运行的Timer事件是彼此互不相干的,如将变量i声明为区域变量,每次程序一运行完,此变量即告完成任务,因此显示的永远是1,如在程序中将i声明为公用变量,此变量存储的值就会一直保留下来。
以上几点只是笔者在当前系统环境下的粗浅认识,可以想见,随着硬件和软件环境的不断改善,将会出现更加精确的Timer控件。
返回学科园地
lihonggen0
2003-05-02
打赏
举报
回复
Timer控件理论上它的记时精度可以达到1ms(毫秒)
在VB中最常用的是Timer控件,它的设置和使用都非常方便,理论上它的记时精度可以达到1ms(毫秒)。但是众所周知的,实际上Timer在记时间隔小于50ms之下是精度是十分差的。它只适用于对于精度要求不太高的场合。
http://www.applevb.com/art/timing.htm
dragon525
2003-05-02
打赏
举报
回复
用timer控件试试,可以精确到毫秒。
实时操作
系统
与非实时操作
系统
到底有什么区别?
个问题一直没搞明白,按资料上所说“实时操作
系统
就是:执行一个功能的
时间
是可预测的”,难道对硬件端口进行读取也能确定
时间
?读取一个网络数据也能事先知道会用多久
时间
? 常说WINDOWS不是实时性
系统
,那又有哪些特性决定了它不是实时操作
系统
呢? 求解答!! 更多分享到: 相关主题推荐: 操作
系统
windows 预测 硬件 网络 相关推荐: asp 数据库打
获取
系统
时间
的几种方法,最高
精确
1ms
●【获取
系统
时间
的几种方法,最高
精确
1ms】 1.硬件支持高精度计时器 (
精确
到1ms )//获取的最准确,
精确
到1ms QueryPerformanceFrequency(); QueryPerformanceCoun
STM32使用FREERTOS获取
系统
时间
STM32使用FREERTOS获取
系统
时间
使用CUBE_MX生成带有free_RTOS操作
系统
的工程,我们经常会使用到
系统
相对
时间
,尤其是使用其做数据采集的项目中经常需要给你数据打上
时间
的标签就需要实时获取
系统
的相对
时间
。 当然,我们可以单独开一个时钟来计时,但是我们在使用操作
系统
的时候就已经选用了一个定时器,这个定时器做的事情很简单就是为操作
系统
提供
时间
节拍,如果我们能够使用这个时钟就能减少很多的初始化定时器的工作,而且能够省下一个定时器。 我们都知道使用cube_MX生成带有free_RTOS操作
系统
c语言获取
系统
时间
精确
到毫秒,如何获取
系统
流逝
时间
(要求
精确
到毫秒)
如题|#include#include/*包含标准库头文件*/#includeintmain(intargc,char**argv){structtimevalstart,stop,diff;gettimeofday(&start,0);//做你要做的事...gettimeofday(&stop,0);timeval...
windows平台获取
系统
时间
windows平台获取
系统
时间
windows平台获取
系统
日期 windows平台获取
系统
时间
,含毫秒数
VB基础类
7,788
社区成员
197,583
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章