У вас не стоит Flash Player
Настройки
#39124 - Wed Mar 21 2012 03:08 PM по чему скользящие Кауфмана так тормозят?
uuzzeerr Offline
veteran

Registered: Thu Sep 29 2011
Записи: 1446
перерисовка графика на 2х годах занимает 5 мин при наличии 2х PKAMAII в скрипте. а PKAMAI завешивает скрипт вообще!
что в них не правельно? точнее как их оптимизировать?

дополнительный вопрос к разрабочикам: при песчете графика по причине изменения даты либо приминения параметров используется только одно ядро проца. можно задействовать все?


Attachments
kaufman.txt (97 downloads)



Отредактировано uuzzeerr (Wed Mar 21 2012 05:09 PM)

Наверх
#39154 - Wed Mar 21 2012 05:08 PM Re: по чему скользящие Кауфмана так тормозят? [Re: uuzzeerr]
Gji Offline
member

Registered: Fri Apr 22 2011
Записи: 137
Оптимизируйте алгоритмы. В "PKMA" как минимум первый вложенный цикл можно сократить. Напишите (для себя) мат. формулы расчетов, возможно это поможет пониманию, что можно сократить.

Код тоже можно НЕМНОГО ускорить: используйте локальные переменные вместо свойств и не надо по нескольку раз к одному элементу массива обращаться через [i], сделайте копию значения, исползуйте операторы типа "/=".

Но вообще, Vito333, в целом, Вам правильно написал. Циклами, и особенно вложенными, можно любой суперкомпьютер завесить.

Наверх
#39155 - Wed Mar 21 2012 05:13 PM Re: по чему скользящие Кауфмана так тормозят? [Re: Gji]
uuzzeerr Offline
veteran

Registered: Thu Sep 29 2011
Записи: 1446
Originally Posted By: Gji
используйте локальные переменные вместо свойств и не надо по нескольку раз к одному элементу массива обращаться через [i], сделайте копию значения, исползуйте операторы типа "/=".


здесь если можно подробней, как для с утра трезвого.

Наверх
#39156 - Wed Mar 21 2012 05:35 PM Re: по чему скользящие Кауфмана так тормозят? [Re: uuzzeerr]
Gji Offline
member

Registered: Fri Apr 22 2011
Записи: 137
Например было так:
Code:
      for (int i = 0; i < P.Count; i++) {
        if (i < Period)
          SMA_[i] = 0;
        else
          for (int j = i - Period + 1; j <= i; j++)
            SMA_[i] += P[j];
        SMA_[i] = SMA_[i]/(Period + 0.0);
      }

А можно примерно так:
Code:
      int count = P.Count;
      int period = Period;
      for (int i = 0; i < count; i++) {
        double s = SMA_[i];
        if (i >= period)
          for (int j = i - period + 1; j <= i; j++)
            s += P[j];
        s /= period;
        SMA_[i] = s;
      }

Повторюсь, большого эффекта это не даст.

Наверх
#39192 - Thu Mar 22 2012 01:18 PM Re: по чему скользящие Кауфмана так тормозят? [Re: Gji]
uuzzeerr Offline
veteran

Registered: Thu Sep 29 2011
Записи: 1446
идею понял, перекомпелю отпишусь

Наверх


Moderator:  ViL, sar