Производительность Java CircularFifoQueue
У меня есть небольшие проблемы с пониманием того, как работает класс CircularFifoQueue. Поэтому для моих требований мне нужна очередь FIFO фиксированного размера (около 6000 элементов). В первый раз я использовал ArrayDequeue, но он работал довольно плохо. Затем я прочитал о CircularFifoQueue и попробовал. Я вижу повышение производительности, но оно все еще не быстрое.
Мой вопрос сейчас: что произойдет, если очередь заполнена, и я добавлю элемент? Весь ли основной массив скопирован? Есть ли какое-то смещение, которое будет установлено, например
head = (head + 1) % size;
Если последнее так, то я думаю, мой алгоритм работает плохо.
Спасибо!
1 ответ
Документы говорят следующее о вставке в CircularFifoQueue
:
Если очередь заполнена, наименее недавно добавленный элемент отбрасывается, чтобы можно было вставить новый элемент.
Что касается производительности, следует отметить, что помимо add
, remove
, peek
, poll
а также offer
методы, которые выполняются за постоянное время, все методы этой структуры данных работают за линейное время или хуже.