【讨论】为什么VB除错会这么慢,怎样提高VB除错的速度?(如果讨论有结果,我会加到200分)

laisiwei 2005-01-22 06:02:04
Option Explicit
Private Declare Function timeGetTime Lib "winmm.dll" () As Long

Private Sub Form_Click()
Dim t As Long, i As Long, a As Long
On Error Resume Next

t = timeGetTime
For i = 1 To 10000
a = Sqr(-1)
Next

Me.Caption = timeGetTime - t
End Sub

以上是测试代码
测试以后发现了一个问题:

用a = Sqr(-1)测试,比a = Sqr(1)要多花10倍时间

更 奇 怪 的 是
上面的代码在VB里执行比编译后快近10倍!
看清楚了,是VB环境里快,而不是编译后快。


大家知道为什么吗?
应该怎样解决?
...全文
403 35 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
rickytwice 2005-02-01
  • 打赏
  • 举报
回复
我想应该还有一个现象,就是第一次‘除错’的时间最长,之后要快得多。可以修改试试:
Private Sub Form_Click()
Dim t As Long, i As Long, a As Long
On Error Resume Next

t = timeGetTime
For i = 1 To 10000
a = Sqr(-1)
Me.Caption =“第”+i+“次”+Val( timeGetTime - t)×100
Next


End Sub

我机器条件未足,未曾试过。
呵呵:)
laisiwei 2005-02-01
  • 打赏
  • 举报
回复
up
熊孩子开学喽 2005-01-31
  • 打赏
  • 举报
回复
因为每一次发生错误都要引发错误事件呀.
laisiwei 2005-01-31
  • 打赏
  • 举报
回复
up
zhujiechang 2005-01-30
  • 打赏
  • 举报
回复
你没发现XP提交一个错误更慢吗?
laisiwei 2005-01-30
  • 打赏
  • 举报
回复
up
pikachu8guan 2005-01-30
  • 打赏
  • 举报
回复
up下 我想看看讨论的结果
laisiwei 2005-01-30
  • 打赏
  • 举报
回复
up
laisiwei 2005-01-29
  • 打赏
  • 举报
回复
up
aohan 2005-01-28
  • 打赏
  • 举报
回复
///如果讨论有结果


看来使用的结果也只能如此了,尽量避免,而不是等着错误发生再去resume next
laisiwei 2005-01-28
  • 打赏
  • 举报
回复
up
LicStar 2005-01-28
  • 打赏
  • 举报
回复
up
homezj 2005-01-27
  • 打赏
  • 举报
回复
这个测试,是很意义的。

这种现象可能与MS对VB设计有关,对于是否能明白原因,我觉得不是最重要的,关键这为我们提供了一个参考,经验一点也不比理论的价值低。

至少让我,以后对何时采用,及怎么采用错误处理,有了一个依据。
ljhdi 2005-01-27
  • 打赏
  • 举报
回复
帮顶
laisiwei 2005-01-27
  • 打赏
  • 举报
回复
up
qyii 2005-01-26
  • 打赏
  • 举报
回复
.:RNPA:. 是什么帮派???
laisiwei 2005-01-26
  • 打赏
  • 举报
回复
up
aohan 2005-01-25
  • 打赏
  • 举报
回复
//是VB环境里快,而不是编译后快

这是能理解的,确实建议尽量避免错误,而不是错误发生后再去处理
LicStar 2005-01-25
  • 打赏
  • 举报
回复
up
Chice_wxg 2005-01-24
  • 打赏
  • 举报
回复
猜测:

本机代码出错处理可能要靠SEH来捕获,而SEH进入与退出过程中要伴随大量的数据建立与销毁工作。
而VB本身变量/对象的建立与销毁就是非常慢的事情,所以编译后会慢。

而IDE运行的时候出错异常是不经过SEH的,直接由虚拟机捕获,对变量的建立与销毁会减少很多,所以速度快。


当然,就算本机代码没通过SEH进行异常捕获,那么也需要类似C里面的异常流来处理,同样是需要很多对象的建立与销毁的。


(以上仅为猜测,我用的一台新机器,几乎没有什么工具,也无法验证,如果大家有兴趣也可以
Debug汇编代码研究一下,呵呵)

加载更多回复(15)

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧