Должен ли я агрессивно освобождать память при чтении файла строка за строкой в Perl?


Должен ли я агрессивно освобождать память при чтении файла, строка за строкой? Пример:

while (<FILE>) {
  my $line = $_;
  <process line>
  undef($line);
}

"Undefing" переменная $ line является хорошим вариантом для уменьшения потребления памяти?

3 2

3 ответа:

Это не должно иметь никакого значения, поскольку переменная будет освобождена, как только начнется следующая итерация цикла, независимо от того, явно ли вы ее отменяете или нет.

Нет. Смотрите perlfaq3 для получения дополнительной информации о том, что вы должны (и не должны) делать в отношении использования памяти в Perl.

Нет. Если только строки в вашем файле не имеют совершенно разной длины, а некоторые из этих длин огромны (скажем, 10 мегабайт и выше), зачем вообще беспокоиться об этом?

Есть ли доказательства того, что цикл потребляет слишком много памяти?