boost::circular_buffer как более быстрый контейнер для входных данных

3 Мая 2017, 21:19, Рубрики: Библиотека Boost, Исследования, Статьи, Торговая платформа

У любой торговой платформы существует потребность в специальных структурах, позволяющих хранить оперативно поступающие данные в определенной последовательности. По сути, это очереди FIFO (first in, first out) с заранее определенным размером и доступом по индексу. По мере поступления новых данных они записываются в конец очереди, а если очередь уже заполнена, старые данные удаляются. Такие очереди, например, используются для хранения временных баров, данных для индикаторов, графиков и т.д.

В настоящее время в нашей торговой платформе QuantPro Studio для этих целей используется std::deque, имеющий всю необходимую функциональность — запись в начало или в конец, доступ по индексу, последовательная итерация. Для возможности контроля наполнения очереди до заданного предела мы реализовали свой класс-обертку, который в общем виде выглядит примерно так (большинство методов опущены для краткости):

(далее…)

Переход с boost::unordered_map и boost::unordered_set на std::unordered_map и std::unordered_set

27 Марта 2017, 19:42, Рубрики: Библиотека Boost, Исследования, Статьи, Торговая платформа

С того времени, как мы перешли на Visual C++ 2015, прошло больше года. До сих пор мы использовали  boost::unordered_map и boost::unordered_set, и они себя вполне хорошо зарекомендовали. Однако, наконец-то, дошли руки протестировать их реализацию из стандартной библиотеки нового компилятора.

(далее…)