编译为本地代码后,ForNext和DoLoop循环(包括所有其他的循环)使用的是同一本地代码。造成循环间速度差异的主要原因还是循环体代码的执行速度。如果循环体代码的非常短(甚至没有),那么就像楼上说的那样,取决于退出循环的条件。
但是需要注意的一点是,这里的“退出循环的条件”是指像 a < b这样的简单句,诸如
Do
Loop While 自定义函数() = True
这样的循环,自定义函数()的执行时间应该算在循环体代码所消耗的时间内。
所以循环结构本身执行速度基本没有差异(因为编译后产生的是相同的本地代码),
如果一定要说的话,理论上DoLoop比ForNext稍快(无法察觉的)
因为ForNext在编译时,编译器会在添加变量的数值增加(i=1 to 10)和退出条件比较(如果i=11则退出循环)后,使用DoLoop循环。
这也说明了为什么DoLoop可以模拟ForNext而ForNext无法模拟DoLoop
温馨提示:内容为网友见解,仅供参考