多くのI/Oを必要とする非常に高速なJavaコードを作成しようとしています。私はのByteBufferを返すメモリマップファイルを使用しています:Javaでメモリマップされたファイル
public static ByteBuffer byteBufferForFile(String fname){
FileChannel vectorChannel;
ByteBuffer vector;
try {
vectorChannel = new FileInputStream(fname).getChannel();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
return null;
}
try {
vector = vectorChannel.map(MapMode.READ_ONLY,0,vectorChannel.size());
} catch (IOException e) {
e.printStackTrace();
return null;
}
return vector;
}
私が抱えている問題は、(バイト[]配列を返さなければならない)のByteBufferの.ARRAY()メソッドが動作しないということです読み取り専用ファイルの場合メモリに構築されたメモリバッファとディスクから読み込まれたバッファの両方で動作するように自分のコードを書きたいと思います。しかし、私はByteBuffer.wrap()関数を使って、すべてのバッファをラップしたくないのですが、これは処理が遅くなることを心配しています。だから私はすべての2つのバージョンを書いています。一つはバイト[]をとり、もう一つはByteBufferをとります。
すべてをラッピングする必要がありますか?または、私はすべてをダブルライトする必要がありますか?
ベンチマークを行い、結果を投稿してください。たとえ専門家があなたの状況に適していない方向を指すことができます。基準!!!! – basszero