У меня возникли проблемы с пониманием того, как работает CircularFifoQueue Class. Поэтому для моих требований мне нужна очередь FIFO фиксированного размера (около 6000 элементов). В frist я использовал ArrayDequeue, но он выполнял довольно плохо. Затем я прочитал о CircularFifoQueue и попробовал. Я вижу повышение производительности, но все еще не быстро.Производительность Java CircularFifoQueue
Мой вопрос: что произойдет, если очередь заполнена и я добавлю элемент? Скопирован ли весь основной массив? Есть ли какое-то смещение, которое будет установлено, например.
head = (head + 1) % size;
Если последнее имеет значение, то я предполагаю, что мой алгоритм работает плохо.
Спасибо!
Вы пробовали и обманули его? Насколько я могу видеть из [источников] (https://commons.apache.org/proper/commons-collections/cobertura/org.apache.commons.collections4.queue.CircularFifoQueue.html): при добавлении нового элемента в полный список вызывается метод remove(), удаляя таким образом элемент. Это поведение также описано в javadocs для add(). – bratkartoffel
@bratkartoffel Да, я сделал, самое время потрачено на выполнение метода offer() – hh32