System.out.print + OS перенаправление против записи в файл, что быстрее? - PullRequest
1 голос
/ 08 октября 2009

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

Ответы [ 3 ]

1 голос
/ 08 октября 2009

Какая разница? Stdout - это поток, так же как и файл. В большинстве операционных систем разницы нет буквально. В Windows есть разные функции, которые вы должны использовать при обработке файловых потоков против выходных потоков, но они по-прежнему почти идентичны API (только файловые имеют префикс «f»). Я был бы очень удивлен, если есть разница в производительности.

Конечно, вы можете использовать альтернативные API для файлов, но я не вижу убедительной причины для этого, поскольку файлы все еще являются потоками на уровне ОС.

1 голос
/ 09 октября 2009

Если типичным выводом является текстовый формат, я бы предпочел стандартный вывод. Вы можете просто проверить, есть ли на терминале, перенаправить файл или направить его к следующей команде. Производительность должна быть одинаковой. Для двоичного вывода вывод файла является более типичным.

1 голос
/ 08 октября 2009

Ваш вопрос действительно: «Должен ли я написать в стандартный вывод или использовать собственный файл ввода / вывода».

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

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

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