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

    15432
    @15432
    Системный программист ^_^
    Что за жесть тут написана. Верхний For убираем нафиг, ускоряем в 85 раз.
    Вместо него сразу проверяем значение на вхождение в промежуток [-25,60] и сразу обновляем массив Frequency[NUM +25]
    Ответ написан
    3 комментария
  • Можно ли оптимизировать код по скорости?

    akzhan
    @akzhan
    // сперва посчитаем HR_PREDs71
    ReDim HR_PREDs71 (1 To MatrixRows) As Float
    For LOOP_CASE = 1 To MatrixRows  
        HR_PREDs71(LOOP_CASE) = HR_PRED(LOOP_CASE, 71)
    Next LOOP_CASE


    Далее понятно?
    Ответ написан
    1 комментарий
  • Можно ли оптимизировать код по скорости?

    15432
    @15432
    Системный программист ^_^
    Из очевидного - участки вида HR_PRED(LOOP_CASE, 73) используются в самой глубине ваших циклов и, возможно, пересчитываются на каждой итерации.

    Можно в самом начале до циклов посчитать все возможные значения для 1...MatrixRows и аргументов 71-75 в табличку размерности MatrixRows * 5 , а в формулах брать готовые значения из этой таблицы.

    И вообще, что такое HR_PRED ? может получится чуток свернуть формулы?

    Ещё из предложений - значения a/b/c/d/e в циклах заменить на целочисленные (-8...8, step 1), а в самой формуле поменять коэффициенты умножения соответствующим образом (HR_PRED тоже чуть иначе считать потребуется).

    Также заметил, что второй аргумент HR_PRED влияет на то, с чем будет складываться. Тогда можно еще больше упростить, предварительно вычислив пять значений HR_PRED(LOOP_CASE, 71)+a, ...72+b ...73+c, и уже их подставлять в формулы на следующем шаге
    Ответ написан
    1 комментарий