Java-файл переместить высокую производительность - PullRequest
4 голосов
/ 11 августа 2010

Я пишу сервер транскодирования медиаданных, на котором мне нужно было бы перемещать файлы в файловой системе, и до сих пор я стою перед дилеммой: можно ли заменить использование java renameTo чем-то другим, что могло бы повысить производительность. Я подумывал об использовании exec ("mv file1 file2"), но это была бы моя последняя ставка. Кто-нибудь имел подобный опыт или может помочь мне найти решение?

Ответы [ 3 ]

8 голосов
/ 11 августа 2010

Во-первых, renameTo, скорее всего, просто заключает в себе системный вызов.

Во-вторых, перемещение файла не требует копирования каких-либо данных из самого файла (по крайней мере, в Unix).Все, что происходит, это то, что ссылка из старого каталога удаляется, а ссылка из нового каталога добавляется.Я не думаю, что вы найдете здесь улучшения производительности.

1 голос
/ 11 августа 2010

Я не думаю, что использование методов по умолчанию для файла имеет (заметное) снижение производительности, так как большинство функций JVMtoOS уже обертывают собственные вызовы.

Единственный случай, когда потребуется exec, - это если вы хотите сделать что-то с правами, отличными от программы, или использовать специальный инструмент для копирования / перемещения файла. (например, smart-move, когда задействованы ntfs-переходы)

0 голосов
/ 12 августа 2010

Если переименование является существенным узким местом с точки зрения производительности, вам необходимо улучшить аппаратное обеспечение, поскольку это является вашим основным ограничением.Программное обеспечение - это тривиальная часть затраченного времени, и его оптимизация мало что изменит.

Какая у вас конфигурация диска?Как это оптимизировано для записи?

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