Как ускорить чтение буферов индикатора?

Образцы, куски исходников, вопросы. Обсуждаем программирование.
Ответить
Сообщение
Автор
Tovaroved
Сообщения: 10
Зарегистрирован: Чт янв 02, 2014 7:34 am
Откуда: Latvia

Как ускорить чтение буферов индикатора?

#1 Сообщение Tovaroved » Вс янв 19, 2014 4:14 pm

Значения из буферов индикатора читаются достаточно медленно.

При чем, Buf1[1000] возвращается сильно медленнее, чем Buf1[10].

Например,
http://www.forextester.ru/forum/viewtop ... =3&t=22024
c MA degree = 1.1 может считаться 8 секунд, а с MA degree = 3.0 может считаться 160 секунд.

Разница - в 20 раз, при, казалось бы, том же количестве вычислений.

Понятно, что, наверное, буферы организованы как очереди, а не как массивы, но всё-таки

Как можно ускорить выборку из буферов индикатора?

Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

Re: Как ускорить чтение буферов индикатора?

#2 Сообщение Terranin » Вс янв 19, 2014 5:01 pm

Tovaroved писал(а):Значения из буферов индикатора читаются достаточно медленно.

При чем, Buf1[1000] возвращается сильно медленнее, чем Buf1[10].

Например,
http://www.forextester.ru/forum/viewtop ... =3&t=22024
c MA degree = 1.1 может считаться 8 секунд, а с MA degree = 3.0 может считаться 160 секунд.

Разница - в 20 раз, при, казалось бы, том же количестве вычислений.

Понятно, что, наверное, буферы организованы как очереди, а не как массивы, но всё-таки

Как можно ускорить выборку из буферов индикатора?
Все данные в программе устроены одинаково - как массивы отображаемые на память.
Т.е. если все данные помещаются в физическую память - то разницы между 0м и 1000м элементом нет, они читаются за одно время. Но если данных слишком много и они не помещаются в память, то часть страниц данных выпихивается на диск и при обращению к элементу данных который в данный момент выпихнут, страница читается с диска в память.

Если это данный случай, то рекомендации такие:
1. Генерировать тики только по нужным для тестирования валютам, все ненужные индикаторы удалить с графиков (См. диалог список индикаторов). Иногда после удаления индикаторов надо перезапустить программу потому что они не сразу удаляются из памяти.
2. Добавить физической памяти в комп.
3. Поставить SSD для более быстрой работы с диском.

Возможен вариант что при degree 3.0 делаются какие-то дополнительные вычисления. Код не смотрел.
Asta la vista
Mike

Tovaroved
Сообщения: 10
Зарегистрирован: Чт янв 02, 2014 7:34 am
Откуда: Latvia

Re: Как ускорить чтение буферов индикатора?

#3 Сообщение Tovaroved » Чт янв 23, 2014 9:13 pm

Спасибо.
Специально не тестировал, но вполне возможно, что не хватает памяти на 32бит Винде.

Для нулевого бара всё с приемлемой скоростью считается, значит, видимо, что-то свопилось.

Есть смысл сапгрейдится, скажем, на 8 гиг ОЗУ, и перейти на 64бит ОС?

Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

Re: Как ускорить чтение буферов индикатора?

#4 Сообщение Terranin » Сб янв 25, 2014 3:55 am

Tovaroved писал(а):Спасибо.
Специально не тестировал, но вполне возможно, что не хватает памяти на 32бит Винде.

Для нулевого бара всё с приемлемой скоростью считается, значит, видимо, что-то свопилось.

Есть смысл сапгрейдится, скажем, на 8 гиг ОЗУ, и перейти на 64бит ОС?
Не могу сказать, попробуйте. В принципе программа 32 битная, т.е. 8 гиг оперировать не сможет, максимум 2 гига под 32 битной ос, но говорят что под 64 битной ос может выделить до 4х (на практике до 3.5). 8 гиг не помешает потому что другие тоже есть хотят как и ос.
Asta la vista
Mike

Ответить