JAVA, использующий RandomAccessFile после поиска, работает очень медленно. Какова причина? - PullRequest
0 голосов
/ 05 мая 2018

Это мой тестовый код

long fileSize = 1024 * 1024 * 512L;
byte[] bts = new byte[8];

RandomAccessFile randomAccessFile = new RandomAccessFile("f:/test.data", "rw");
randomAccessFile.setLength(fileSize);

randomAccessFile.seek(0);
long time = System.nanoTime();
randomAccessFile.write(bts);
System.out.println("write1 use:" + (System.nanoTime() - time));

randomAccessFile.seek(1024 * 1024 * 256L);
time = System.nanoTime();
randomAccessFile.write(bts);
System.out.println("write2 use:" + (System.nanoTime() - time));

печать

write1 use:181051
write2 use:2029338072

Видно, что запись составляет 9 байт дважды, а второй раз в 10000 раз медленнее, чем первый.

Итак, я хотел бы спросить, почему при поиске файл будет так медленно записываться. Есть ли какое-нибудь решение?

...