Это попадает в область микро оптимизации. Самая большая часть Вашего времени попадает в инициализацию механизма PHP, начинающего работу.
Поэтому, если у Вас нет порядка десятков тысяч строк (или еще больше), Вы не должны быть обеспокоены им.
Для добавления я сделал маленький тест миллиона строк, где я использовал php для печати их и где я использовал php для вызова c программы, которая сделала то же самое, и различие было крохотным.
Немного больше информации
, Что происходит в 2-м примере, - то, что Вы "поворачиваете" PHP включения - выключения, не точно, что происходит, но для этого примера он соответствует.
дело, Вы должны быть более взволнованы по поводу, тот код, идет иметь большую логику вокруг этого? Я собираюсь разделить ту строку еще на большее количество строк или даже поместить ее в различные места? Действительно ли это - Представление приложения MVC?
Для 1 и 2 это мог быть бросок между любым методом. Но для 3 я пошел бы с методом 2 по этим причинам.
представление А в веб-приложении MVC является главным образом html/css. Таким образом, я хочу видеть, что быть отформатированным правильно и я хочу видеть в своем редакторе окраску HTML. Таким образом, это плюс.
Зависит от того, что вы считаете элегантным.
no warnings qw(once);
our ($a, $b);
Одного из этих двух будет достаточно. Вы даже можете довольно легко ограничить их область действия.
my @sums = pairwise { no warnings qw(once); $a + $b } @x, @y;
my @sums = pairwise { our $a + our $b } @x, @y;
Явное указание пакета также подавит предупреждение. Если вы находитесь в main
,
my @sums = pairwise { $::a + $::b } @x, @y;
Add this near top of your program:
use vars qw( $a $b );
or, if you don't like the "obsolete" part of perldoc vars, simply add:
our ( $a, $b );
У меня такая же проблема с аналогичным модулем, который я пишу. Единственное решение, которое я нашел (кроме использования функций, которые используют $ a
и $ b
дважды, конечно), - это поместить эту строку где-нибудь в вашем коде:
$a = $b; # hack to disable warnings about "main::a" used only once
It в основном ничего не делает, но отключает предупреждение. Оставьте комментарий, чтобы будущим сопровождающим не приходилось читать ваши мысли.
Ага, это не вы. Вы можете не использовать предупреждения 'once'; или вы можете заранее объявить $a и $b так, чтобы они больше не использовались ни разу.
our ($a, $b);
делает этот трюк. Я предпочитаю этот вариант, потому что он не отключает предупреждения для всего остального, и он немного более описателен.
Возможно, это ошибка в List::Util
.
Глобальное отключение предупреждений, вероятно, не очень хорошая идея, однако вы можете сделать что-то вроде этого:
{
no warnings 'once';
return join("_", @monsters) if @monsters && List::Util::reduce { $a && $b // 0 > 0 } 1,@monsters;
}
Это отключит соответствующую категорию предупреждений только для этой части кода.