LinkedBlockingQueue и примитивы

Мне нужна LinkedBlockingQueue, но я передаю ей примитивы. Моя скорость передачи данных для добавления в очередь составляет около 4 мс или 256 точек данных в секунду. Проблема, с которой я сталкиваюсь, заключается в том, что данные начинают задерживаться сразу при запуске, но со временем кажется, что JIT делает это более эффективным, и это заканчивается в режиме реального времени. Я пытаюсь выяснить, где мне нужно уменьшить начальную задержку, и одним из них является «обновление» объекта Float из автоупаковки при каждой вставке в очередь. У кого-нибудь есть LinkedBlockingQueue с использованием примитивов?

Или есть что-то быстрее, чем LinkedBlockingQueue, когда вы не уверены в размерах и использовании примитивов?


person JPM    schedule 17.10.2011    source источник
comment
256 точек данных в секунду кажется очень медленным. Я сомневаюсь, что здесь проблема заключается во времени добавления/удаления в очередь - скорее всего, это скорость, с которой вы ее производите/потребляете.   -  person Adamski    schedule 17.10.2011
comment
вы можете скопировать исходный код и изменить все общий от E до float   -  person ratchet freak    schedule 17.10.2011
comment
Время, необходимое для этого, составляет около 1 микросекунды. Сколько усилий стоит, чтобы сэкономить столько времени.   -  person Peter Lawrey    schedule 17.10.2011
comment
На быстром компьютере это около 1 микросекунды, я на самом деле ставлю это на телефон Android, так что сначала оно составляет около 1 мс, а затем в конечном итоге становится 10 микросекунд.   -  person JPM    schedule 17.10.2011
comment
почему вы должны использовать очередь блокировки? если вы используете обычную очередь, она работает лучше? насколько я могу вам сказать, используя примитив, ваша очередь будет помещать примитив в объект-оболочку.   -  person DarthVader    schedule 17.10.2011
comment
Использование LinkedBlockingQueue, потому что я передаю данные между потоками и хочу сделать это в FIFO.   -  person JPM    schedule 17.10.2011


Ответы (1)


Хотя ваши данные на самом деле недостаточно велики, чтобы гарантировать лучшую структуру данных, библиотека Fastutil — это именно то, что вам нужно. ищешь. Это коллекции, которые работают быстро и требуют мало памяти, и у них есть версии для каждого примитива Java.

У них нет реализации для блокировки, но вы должны иметь возможность расширять их классы, добавляя их функциональность.

person Reverend Gonzo    schedule 17.10.2011