У вас не стоит Flash Player
Настройки
#18295 - Fri Dec 10 2010 05:59 PM Когда имеет смысл использовать "делегаты"?
DIS Offline
stranger

Registered: Fri Dec 10 2010
Записи: 15
Добрый день,

Разбираюсь с TSLab - во всех демо-скриптах от Laber для вычисления индикатора используется сложная конструкция с использованием делегатов:

Например, в скрипте supertrend_script.cs (http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7815)

// серия значений ATR
// кэширование с учетом параметра Period
IList<double> nATR = ctx.GetData("ATR", new[] {Period.ToString()}, delegate { return GenATR(source, Period); });

Не совсем понимая, для чего это нужно, поэкспериментировал. Заменил эту строчку на более простую:

IList<double> nATR = GenATR(source, Period);

И ничего не изменилось! Время выполнения также осталось прежним, проверил по оптимизации.

Не сомневаюсь, что конструкция с делегатами для чего то предназначена, но когда её нужно использовать и в каких случаях без нее можно безболезненно обойтись?

Наверх
#18297 - Fri Dec 10 2010 06:25 PM Re: Когда имеет смысл использовать "делегаты"? [Re: DIS]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
При оптимизации в вашем случае GenATR будет пересчитываться всегда, даже если Period не изменился. А при передаче делегата в кеш, будет проводится сравнение, и если в кеше уже есть посчитанный вариант, то повторно он считаться не будет.

Наверх
#18298 - Fri Dec 10 2010 07:23 PM Re: Когда имеет смысл использовать "делегаты"? [Re: Nektodron]
DIS Offline
stranger

Registered: Fri Dec 10 2010
Записи: 15
OK, спасибо! Теперь все встало на свои места - это нужно исключительно для ускорения оптимизации и больше нигде (ни при выполнении, ни при отображении) не используется...

По всей видимости, в скрипте на котором я это тестировал индикатор вычисляется очень быстро и кеширование никак не влияет на скорость оптимизации. Поэтому разницу я и не заметил.

Наверх
#18305 - Fri Dec 10 2010 08:38 PM Re: Когда имеет смысл использовать "делегаты"? [Re: DIS]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Если история короткая (не больше пары тысяч свечей), то разница будет минимальная. А на историях с десятками и сотнями тысяч свечей разница будет на порядок.

Наверх


Moderator:  ViL, sar