在 Select 案例中优化 For...Next 循环

Optimising For...Next loops in Select Case

我在一段代码中有三个不同的 CASE,每个代码都围绕着 For...Next 循环的例程进行了细微的变化。问题是,根据我嵌套的方式,效率和速度有什么不同吗?

换句话说就是:

Select Case sPosition
    Case Is = "First"
        For j = 17 to 65
            [Do stuff]
        Next j
    Case Is = "Middle"
        For j = 17 to 65
            [Do stuff]
        Next j
    Case Is = "Last"
        For j = 17 to 65
            [Do stuff]
        Next j
End Select

...效率高于或低于:

For j = 17 to 65
    Select Case sPosition
        Case Is = "First"
            [Do stuff]
        Case Is = "Middle"
            [Do stuff]
        Case Is = "Last"
            [Do stuff]
    End Select
Next j

我认为第一个变体更有效,因为 select case 只工作一次,而在第二个变体中 select case 对 cicle 的每一步都有效(49 次)

与 SO 相比,CodeReview 的问题更多,但无论如何,这取决于您打算如何处理循环。在第一种情况下,你有一个条件,然后你根据条件的结果循环遍历数据,对所有数据做同样的事情。在第二种情况下,您在每次循环运行时重新检查条件。如果您认为循环运行时会发生不同的事情(选择不同的案例),那么您需要使用第二个变体,但如果检查的条件没有改变,那么第一个选项会更快,因为条件只是检查一次循环