Эффективность в for ..next циклах хранения элемента массива как переменной по сравнению с сохранением элемента массива - PullRequest
0 голосов
/ 24 мая 2019

Вопрос: Более эффективно хранить kmatch(c) в e и использовать e?Пожалуйста, объясните, почему для ответов.

Справочная информация: При поиске экономии времени для выполнения кода, на ум пришел следующий вопрос для кода ниже.

Информациядля размеров массивов: kmatch() хранит данные от 1 до последней строки таблицы Excel для 1 столбца.Обычно он содержит несколько тысяч строк, и kmatch и outputc определены ранее в подпрограмме как варианты

Текущий код:

For c = 1 To UBound(kmatch, 1)
    If kmatch(c) <> 0 Then
        outputc(c, 1) = Abs(Other_array1(kmatch(c), 1))
        outputc(c, 2) = Abs(Other_array2(kmatch(c), 1))
        outputc(c, 3) = Abs(Other_array3(kmatch(c), 1))
        outputc(c, 5) = Other_array4(c, 1)

        If (Abs(Other_array5(kmatch(c), 1)) - Abs(Other_array6(kmatch(c), 1))) > 0 Then
            outputc(c, 4) = Abs(Other_array5(kmatch(c), 1)) - Abs(Other_array6(kmatch(c), 1))
        Else
            outputc(c, 4) = 0
        End If

        For b = 1 To 5
            outputc(c, 6) = outputc(c, b) + outputc(c, 6)
        Next b

        Other_array7(c, 1) = Other_array8(kmatch(c), 1)
    Else
        For b = 1 To 6
            outputc(c, b) = 0
        Next b
    End If
Next c

Планируемый код:

For c = 1 To UBound(kmatch, 1)
    e = kmatch(c)
    If e <> 0 Then
        outputc(c, 1) = Abs(Other_array1(e, 1))
        outputc(c, 2) = Abs(Other_array2(e, 1))
        outputc(c, 3) = Abs(Other_array3(e, 1))
        outputc(c, 5) = Other_array4(c, 1)

        If (Abs(Other_array5(e, 1)) - Abs(Other_array6(e, 1))) > 0 Then
            outputc(c, 4) = Abs(Other_array5(e, 1)) - Abs(Other_array6(e, 1))
        Else
            outputc(c, 4) = 0
        End If

        For b = 1 To 5
            outputc(c, 6) = outputc(c, b) + outputc(c, 6)
        Next b

        Other_array7(c, 1) = Other_array8(e, 1)
    Else
        For b = 1 To 6
            outputc(c, b) = 0
        Next b
    End If
Next c
...