请问VB里面的循环结构的运行速度是:for 语句快,还是do__loog语句快呢?

我知道一种是在已知循环次数,一种是未知知循环次数,但是,我还是想知道哪种运行起来的速度快点!

编译为本地代码后,ForNext和DoLoop循环(包括所有其他的循环)使用的是同一本地代码。造成循环间速度差异的主要原因还是循环体代码的执行速度。如果循环体代码的非常短(甚至没有),那么就像楼上说的那样,取决于退出循环的条件。

但是需要注意的一点是,这里的“退出循环的条件”是指像 a < b这样的简单句,诸如
Do
Loop While 自定义函数() = True
这样的循环,自定义函数()的执行时间应该算在循环体代码所消耗的时间内。

所以循环结构本身执行速度基本没有差异(因为编译后产生的是相同的本地代码),
如果一定要说的话,理论上DoLoop比ForNext稍快(无法察觉的)
因为ForNext在编译时,编译器会在添加变量的数值增加(i=1 to 10)和退出条件比较(如果i=11则退出循环)后,使用DoLoop循环。
这也说明了为什么DoLoop可以模拟ForNext而ForNext无法模拟DoLoop
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-04-21
这个和要循环的次数和代码算法有关
第2个回答  2009-04-21
对同样的循环体来讲,循环速度的快慢取决于终止循环条件的测试,FOR循环的中止条件测试只是比较两个数的大小,而DO循环的测试往往是仅是比较大小,甚至会有其他的运算或测试,因此从这个角度上来讲,FOR循环应该比DO循环快。
当然这是我个人的理解,不代表权威。

请问VB里面的循环结构的运行速度是:for 语句快,还是do__loog语句快呢...
Do Loop While 自定义函数() = True 这样的循环,自定义函数()的执行时间应该算在循环体代码所消耗的时间内。所以循环结构本身执行速度基本没有差异(因为编译后产生的是相同的本地代码),如果一定要说的话,理论上DoLoop比ForNext稍快(无法察觉的)因为ForNext在编译时,编译器会在添加变量的数值增...

相似回答
大家正在搜