Это полностью зависит от того, что ваша программа должна делать.Общий совет - хранить в памяти столько данных, сколько необходимо.Например, рассмотрим простую программу, которая считывает каждую запись из файла транзакций, а затем сообщает об общем количестве транзакций и общей сумме в долларах:
count = 0
dollars = 0
while not end of file
read record
parse record
increment count
add transaction amount to dollars
end
output count and dollars
Здесь вам явно необходима только одна транзакциязапись в память за один раз.Итак, вы читаете запись, обрабатываете ее и отбрасываете.Нет смысла загружать все записи в список или другую структуру данных, а затем выполнять итерацию по списку, чтобы получить счетчик и общую сумму в долларах.
В некоторых случаях вам нужно несколько записей, возможно, всеиз них в памяти.В этих случаях все, что вам нужно сделать, это немного перестроить программу.Вы продолжаете цикл чтения, но позволяете ему добавлять записи в список.Затем вы можете обработать список:
list = []
while not end of file
read record
parse record
add record to list
end
process list
output results
Нет смысла загружать весь файл в список, а затем последовательно сканировать список, чтобы получить количество и количество в долларах.Это не только пустая трата памяти, но и более сложная программа, использование памяти без выигрыша, медленная работа и сбой при работе с большими наборами данных.Соотношение «память и производительность» не всегда применимо.Часто, как и в этом случае, использование большего объема памяти замедляет работу программы.
Обычно я считаю хорошей практикой структурировать свои решения таким образом, чтобы хранить в памяти как можно меньше данных.Например, если решение будет проще с сортированными данными, я позабочусь о том, чтобы входные данные были отсортированы до запуска программы.
Это общий совет.Без конкретных примеров трудно сказать, какой подход предпочтительнее.