Я пытался прочитать файл в массиве с помощью FileInputStream, а файл размером ~ 800 КБ занял около 3 секунд для чтения в память. Затем я попробовал тот же код, кроме как с FileInputStream, завернутым в BufferedInputStream, и потребовалось около 76 миллисекунд. Почему чтение байта файла байтом выполняется намного быстрее с помощью BufferedInputStream, хотя я все еще читаю его байтом байтом? Здесь код (остальная часть кода совершенно неактуальна). Обратите внимание, что это "быстрый" код. Вы можете просто удалить BufferedInputStream, если хотите "медленный" код:
InputStream is = null;
try {
is = new BufferedInputStream(new FileInputStream(file));
int[] fileArr = new int[(int) file.length()];
for (int i = 0, temp = 0; (temp = is.read()) != -1; i++) {
fileArr[i] = temp;
}
BufferedInputStream более чем в 30 раз быстрее. Это гораздо больше. Итак, почему это так, и возможно ли сделать этот код более эффективным (без использования каких-либо внешних библиотек)?