2015-07-31 3 views
1

Я пишу программу, которая берет в байтовый массив потенциально миллионы байт, читает каждый из ByteArrayInputStream и если байт не «печатаем» (ascii 32-126), этот байт кодируется определенным образом и записывается в экземпляр ByteArrayOutputStream; если байт «печатаем», он напрямую записывается в тот же экземпляр ByteArrayOutputStream. Итак, из более широкого представления я беру в массив байтов и возвращаю аналогичный массив байтов, за исключением того, что некоторые символы были закодированы.Добавление к массиву против записи в файл

Мой вопрос: было бы быстрее записать мои данные в файл или постоянно писать этот OutputStream?

+2

Почему вы думаете, что запись на диск будет быстрее? Жесткие диски - даже SSD - медленны относительно доступа к памяти. – RealSkeptic

+0

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что нет правильного ответа - вопрос недописан – ControlAltDel

+1

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

ответ

0

Будет быстрее записывать данные в выходной поток. Запись в файл будет связана с доступом к диску, который медленнее, чем доступ к ОЗУ, в котором живет массив байтов внутри ByteArrayOutputStream.

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

Смежные вопросы