Comments 9
Так нужна-то автору была очередь или кольцевой буфер? Какой смысл обсуждать производительность, если это разные вещи по смыслу?
Нужна была FIFO очередь аудиоданных. Изначальна она работала на std::deque, но затем я заменил ее на кольцевой буфер boost::circular_buffer - естесственный выбор для аудио, тем более что ALSA сама использует кольцевой буфер. Семантика не изменилась, поэтому сравнение корректно; неожиданно, кольцевой буфер оказался значительно медленнее.
просто boost::circular_buffer это плохой буфер, полно более хороших реализаций
Похоже на то - по крайней мере в моем сценарии boost::circular_buffer значительно проиграл std::deque. Если можете посоветовать конкретную реализацию, было бы интересно сравнить.
жиза жизовая) в поисках тонкого места иногда можно набрести на вообще неожиданные места
а еще во многих языках програмирования некторые веши оптимизированы асм-вставками под популярные процессоры и потому на реальных тестах может оказатся что "не оптимальный" алгоритм работы на самом деле оптимальнее чем "сделаный правильно"
Как «быстрый» кольцевой буфер поднял загрузку CPU с 2% до 25%