VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 8926|回复: 17

VB流言终结贴 - 流言4(For循环的速度差别)

[复制链接]
 楼主| 发表于 2008-3-28 16:26:45 | 显示全部楼层 |阅读模式
流言:
For next循环中,如果next后面加上循环变量(比如next i)则速度会变慢(或变快)

测试如下:
(测试环境VB6+winxp_sp2)
首先我们建立一个测试工程,代码如下:
Option Explicit
Private Declare Function timeGetTime Lib "winmm.dll" () As Long

Private Sub Command1_Click()
Dim i As Long
Dim T1 As Long
T1 = timeGetTime

For i = 0 To 1000000000
    Dim a As Long
    a = 1 + 2
Next i

Me.Caption = timeGetTime - T1
End Sub

Private Sub Command2_Click()
Dim i As Long
Dim T1 As Long
T1 = timeGetTime

For i = 0 To 1000000000
    Dim a As Long
    a = 1 + 2
Next

Me.Caption = timeGetTime - T1
End Sub

然后生成exe程序,并分别点击command1和command2各10次。(编译为本地代码,没有任何高级优化选项)
结果如下:
有i        无i
1451        1440
1421        1443
1414        1439
1428        1411
1442        1422
1410        1422
1417        1415
1400        1433
1419        1429
1431        1448

虽然每次测试各有快慢,不过从总体来说基本一样,即使速度有差别也不是太大。

再生成一次exe程序,并分别点击command1和command2各10次。(编译为本地代码,选择所有高级优化选项)
932        964
946        942
946        950
949        942
936        951
933        956
947        967
942        936
993        934
944        960

依然是不相上下。

这个流言的结论就是:
For循环中,next后面是否跟变量,对于运行速度基本没有影响(或影响不大)。

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
1、本系列帖子说的VB均指VB6.0版本。除非特别说明,否则操作系统环境均为xp+sp2。
2、本系列帖子所说的结论只是对客观现象简单的推断,水平有限,难免错漏欢迎指正。
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

评分

参与人数 3威望 +10 人气 -3 收起 理由
hovidelphic -2 伟大的负分版主,请继续禁止账号。
socket478 -1 你欺负我表哥,去你妈的。
炉子 + 10 原创内容

查看全部评分

发表于 2008-3-28 16:49:41 | 显示全部楼层
恩。这个同意
补充一下。关掉整数溢出检查可以极大地提高循环速度
回复 支持 反对

使用道具 举报

发表于 2008-3-30 10:34:36 | 显示全部楼层
我还真不知道有如此一说:)
回复 支持 反对

使用道具 举报

发表于 2008-3-30 23:13:10 | 显示全部楼层
个人建议:有多个计数器 也就是多重for next时 用next i的形式比较规范清楚
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-31 09:49:44 | 显示全部楼层
原帖由 jay36 于 2008-3-30 23:13 发表
个人建议:有多个计数器 也就是多重for next时 用next i的形式比较规范清楚


同意,我一直是这样干的。

评分

参与人数 1人气 -2 收起 理由
hovidelphic -2 伟大的负分版主,请继续禁止账号。

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2008-5-12 11:40:27 | 显示全部楼层
原帖由 jay36 于 2008-3-30 23:13 发表
个人建议:有多个计数器 也就是多重for next时 用next i的形式比较规范清楚

这种情况下,其实缩进更为重要

我以前也挺喜欢写next i的,后来用了叶帆的工具,会自动写next,我就没管了
回复 支持 反对

使用道具 举报

发表于 2008-5-12 13:36:45 | 显示全部楼层
for a = 1 to 10
   for b = 0 to 1
      for c = 0 to 1
         for d = 0 to 1
            for e = 0 to 1
               for ...
next ...,e,d,c,b,a

那是干这个用的
回复 支持 反对

使用道具 举报

发表于 2009-2-10 10:41:39 | 显示全部楼层
非常感谢,顶一下~~~~~~~
回复 支持 反对

使用道具 举报

发表于 2009-2-22 13:46:38 | 显示全部楼层
学习。。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2009-3-14 11:31:32 | 显示全部楼层
原帖由 nbdld 于 2008-5-12 13:36 发表
for a = 1 to 10
   for b = 0 to 1
      for c = 0 to 1
         for d = 0 to 1
            for e = 0 to 1
               for ...
next ...,e,d,c,b,a

那是干这个用的


又学了一招
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2019-8-22 03:53

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表