많은 I/O를 수행해야하는 매우 빠른 Java 코드를 작성하려고했습니다. I는 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() 함수는 모든 버퍼를 감싸고 싶지 않습니다. 그래서 저는 두 가지 버전의 모든 것을 작성했습니다. 하나는 byte []를 사용하고, 다른 하나는 ByteBuffer를 사용합니다.
모든 것을 포장해야합니까? 아니면 모든 것을 이중으로 써야합니까?
벤치마킹하여 결과를 게시하십시오. 전문가가 한 방향으로 당신을 지시 할 수 있다고하더라도 방향이 귀하의 상황에 맞지 않을 수도 있습니다. 기준!!!! – basszero