2011-10-17 9 views
4

私はLinkedBlockingQueueが必要ですが、プリミティブを渡しています。キューに追加するデータレートは、1秒あたり約4msまたは256データポイントです。私が抱えている問題は、開始時にデータがすぐに遅れ始めるのですが、時間の経過とともにJITはこれをより効率的に行い、リアルタイムで終了するようです。私は最初の遅延を減らす必要がある場所を把握しようとしています。そのうちの1つは、キュー内の各インサートのオートボックスからのFloatオブジェクトを「新しくする」ことです。誰もがプリミティブを使用してLinkedBlockingQueueを持っていますか?LinkedBlockingQueueとプリミティブ

サイズがわからず、プリミティブを使用しているときに、LinkedBlockingQueueより速いものがありますか?

+2

256データポイント/秒は非常に遅いようです。キューに追加/削除する時間がここで問題になるのではないかと疑問に思う - それはあなたがそれを生産/消費しているレートである可能性が高い。 – Adamski

+0

あなたは[ソースコード](http://www.docjar.com/docs/api/java/util/concurrent/LinkedBlockingQueue.html)をコピーして、すべての一般的な 'E'を' float'に変更することができます –

+0

時間約1マイクロ秒である。その多くの時間を節約するにはどれだけの労力が必要ですか。 –

答えて

1

データが実際のデータ構造よりも十分に大きいわけではありませんが、Fastutilライブラリは探しているものです。これは、高速かつ低メモリのフットプリントで、各Javaプリミティブのバージョンを持つコレクションです。

ブロッキングの実装はありませんが、機能を追加するためにクラスを拡張できる必要があります。

関連する問題