Tôi đã cố gắng viết một số mã Java rất nhanh mà phải làm rất nhiều I/O. Tôi đang sử dụng một bộ nhớ ánh xạ tập tin mà trả về một ByteBuffer:Các tệp ánh xạ bộ nhớ trong 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;
}
Vấn đề mà tôi đang gặp là phương pháp ByteBuffer .array() (mà nên trả về một mảng byte []) không hoạt động cho các tệp chỉ đọc. Tôi muốn viết mã của tôi để nó sẽ làm việc với cả hai bộ nhớ đệm được xây dựng trong bộ nhớ và bộ đệm đọc từ đĩa. Nhưng tôi không muốn bọc tất cả các bộ đệm của tôi một hàm ByteBuffer.wrap() vì tôi lo lắng rằng điều này sẽ làm chậm mọi thứ. Vì vậy, tôi đã viết hai phiên bản của tất cả mọi thứ, một trong đó có một byte [], một trong đó có một ByteBuffer.
Tôi có nên bọc mọi thứ không? Hay tôi nên viết đôi mọi thứ?
điểm chuẩn và đăng kết quả, ngay cả khi chuyên gia có thể chỉ cho bạn theo một hướng mà hướng có thể không hoạt động cho trường hợp của bạn. Điểm chuẩn !!!! – basszero