Чёрная магия C++: Быстрый кольцевой буфер
Однажды у меня возникла потребность в кольцевом буфере на C++ для хранения довольно объёмных потоковых данных. Проблема заключалась в том, что мне было необходимо поддерживать непрерывность и упорядоченность данных в памяти, чтобы в любой момент времени я мог считать все элементы буфера одним бесшовным куском в порядке поступления элементов. Как правило, кольцевой буфер реализуется через списки, вроде std::list или std::deque , либо через плоские массивы, вроде std::vector или boost::circular_buffer . Но ни одна реализация не гарантирует непрерывность и упорядоченность одновременно. В данной статье я расскажу про реализацию буфера через трюк с виртуальной памятью, сохраняющую упорядоченность элементов в непрерывной ограниченной области памяти.
https://habr.com/ru/articles/1070772/
#кольцевой_буфер #круговой_буфер #язык_c++ #производительность #оптимизация #алгоритмы_и_структуры_данных #виртуальная_память #valgrind #профилирование #opencv