Медленно но верно, мой алгодвижок становится многопоточным.
Что это значит на практике? Одной из фишек моего движка — тестер-оптимизатор с визуальным представлением всех кривых эквити. Один год минутных данных на 80 инструментах робот считал примерно пять минут, пятиминутки считались около минуты. Это было сопоставимо с производительностью Wealth-Lab, и в общем, приемелемо, однако задача стоит более глобальная, и она потребует много исторических расчетов.
В связи с тем, что мне пришлось работать с многопоточностью для Takion, я решил попробовать использовать подобную технику для оптимизатора, и результаты меня порадовали.
После добавления многопоточности и небольшой оптимизации алгоритмов скорость на i7-3770K увеличилась в десять раз и стала более чем приемлема. Минутки — 30 секунд, пятиминутки — 6.
На этом я не успокоился и собрал сервер с двумя Xeon X5650 2.6GHz, 6 ядер в каждом. Итого у меня появилась возможность запускать сразу 24 потока.
Прирост скорости не впечатлил, если честно. Вместо планируемого ускорения в два с лишним раза я получил прирост в районе 20%. Думаю, надо лучше работать с данными, на картинке внизу видно, что процессоры загружены не полностью, и в какие-то моменты, очевидно, находятся в режиме ожидания очереди. В общем, есть над чем работать.
(
Читать дальше )