Я относительно новичок в C # и программировании, поэтому, пожалуйста, потерпите меня. Я работаю с приложением, в котором мне нужно прочитать некоторые файлы и обработать их в блоках (например, данные обрабатываются блоками по 48 байт).
Я хотел бы знать, что лучше, с точки зрения производительности, читать весь файл сразу в памяти, а затем обрабатывать его или читать файлы по частям и обрабатывать их напрямую, или читать данные большими кусками (несколько кусков данные, которые затем обрабатываются).
Как я понимаю до сих пор:
Считать весь файл в памяти
Плюсы:
-Это быстро, потому что самая дорогостоящая операция - поиск, когда голова на месте, она может читать довольно быстро
минусы:
-Он потребляет много памяти
-Он потребляет много памяти за очень короткое время (это то, чего я в основном боюсь, потому что не хочу, чтобы это заметно влияло на общую производительность системы)
Чтение файла кусками
плюсы:
-Просто (более интуитивно понятно) реализовать
while(numberOfBytes2Read > 0)
read n bytes
process read data
- он потребляет очень мало памяти
минусы:
-Это может занять гораздо больше времени, если диск должен снова искать файл и переместить головку в соответствующую позицию, что в среднем стоит около 12 мс.
Я знаю, что ответ зависит от размера файла (и аппаратного обеспечения). Я предполагаю, что лучше прочитать весь файл сразу, но для больших файлов это правда, каков максимальный рекомендуемый размер для чтения в памяти за один раз (в байтах или относительно аппаратного обеспечения - например,% от RAM)
Спасибо за ваши ответы и время.