社区
VB基础类
帖子详情
如何取得精确的系统时间?
leoxue
2003-05-02 02:54:16
如何取得精确的系统时间?
我想要取得执行一段代码所用去的时间,但time好像只能精确到秒,我想能够得到精确到毫秒的时间,有什么办法可以吗?
...全文
64
7
打赏
收藏
如何取得精确的系统时间?
如何取得精确的系统时间? 我想要取得执行一段代码所用去的时间,但time好像只能精确到秒,我想能够得到精确到毫秒的时间,有什么办法可以吗?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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控件试试,可以精确到毫秒。
金融科技-SpringBoot231MyBatisPlus332Layui256EasyWeb318-四方支付
系统
商户管理运营后台资金结算交易监控风.zip
金融科技_SpringBoot231MyBatisPlus332Layui256EasyWeb318_四方支付
系统
商户管理运营后台资金结算交易监控风.zip【vmware虚拟机安装】资源征集
java kotlin demo-Kotlin资源
demo for java and kotlin
2025713.pdf
2025713.pdf
Docker容器如何绑定宿主机外部IP与端口详解
资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 Docker让容器通过外部访问或容器互联来提供网络服务。用 myfirstapp 镜像演示: 外部访问容器 容器启动后,若其中运行网络应用,可用 -p 或 -P 指定端口映射。 a. 使用 -P(大写)时,Docker 会随机挑选一个宿主机端口映射到容器内部暴露的端口。 示例: dockerrun−d−Pmyfirstapppythonapp.py docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
(完整word版)基于MATLAB的水箱液位控制
系统
的设计与.doc
(完整word版)基于MATLAB的水箱液位控制
系统
的设计与.doc
VB基础类
7,785
社区成员
197,585
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章