@doves
далек от программирования, но хочу стать ближе)

Как можно ускорить VB макрос для пакета Statistica?

Подскажите, как можно ускорить этот код. Он подсчитывает частоту встречаемости 85-ти значений переменной NUM в каждой строке массива ABCDE, перебирая 13^5*5 колонок, и помещает результат в массив FREQUENCY, затем результат переносится в таблицу на экране. Сейчас на каждое из 85 значений уходит порядка 4-х минут, т.е. в сумме получается около 6-ти часов, что ОЧЕНЬ долго. Буду признателен за идеи, как можно ускорить

Sub Main
 '--------------------Counting the frequency of numbers in the range from -25 to 60--------------
  Dim FREQUENCY(1 To 250, 1 To 85) As Long
    For NUM = -25 To 60                               
        v = v+1
        For row = 1 To 250                          
            For col = 1 To 13^5*5               
                If ABCDE(row, col) = NUM Then FREQUENCY(row, v) = FREQUENCY(row, v) + 1 
            Next col
        Next row
    Next NUM
    v=0
 '-----------------------Writing the results to the table on the screen--------------------------
    For row = 1 To 250
        For j = 1 To 85
            TABLE(row, j) = FREQUENCY(row, j)
        Next j
    Next row
 
End Sub
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
15432
@15432
Системный программист ^_^
Что за жесть тут написана. Верхний For убираем нафиг, ускоряем в 85 раз.
Вместо него сразу проверяем значение на вхождение в промежуток [-25,60] и сразу обновляем массив Frequency[NUM +25]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Jony1337
Сделать другой алгоритм выполнения задачи тогда будет быстрее .
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы