Чтение и запись больших файлов (> 1 Гб) с использованием Java NIO подходит? - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь прочитать и записать большой файл, обычно размером более 1 ГБ в каждой транзакции, в другое место хранения. Что является наиболее эффективным с точки зрения производительности и низкого объема памяти (предотвращая любую ситуацию с OOM) для передачи файла путем записи его в другое место хранения?

я видел Java NIO - более эффективный способ по сравнению с традиционный Java IO, но действительно ли он подходит в моем случае использования и будет ли это излишним?

1 Ответ

0 голосов
/ 22 января 2020

Я попытался скопировать большие файлы этого размера (1 ГБ). Отнятое время зависит больше от базового оборудования и состояния сети, чем Java NIO. В качестве простого примера, который я только что попробовал, для копирования файла 989M потребовалось следующее среднее время.

Примечание: Не было большой разницы, когда файл уже существует и его необходимо заменить.

  1. Из папки SSD в папку SSD: 4 мс
  2. Из папки SSD в папку HDD (5400rpm): ~ 7 мс
  3. Из папки HDD (5400rpm) в папку SSD: 4ms
  4. С HDD (5400 об / мин) папка в папку жесткого диска (5400 об / мин): ~ 7ms

Я заметил следующее:

  1. Это чтение не вызывает большой разницы.
  2. То, что замена существующего файла новым содержимым не вызывает большой разницы.
  3. Что есть разница в записи на основе жесткого диска.

Когда мы запускаем тесты на сетевых дисках, Я уверен, что из-за сетевых переменных будут большие различия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...