Метод Perl обычно начинается с my $self = shift;
и затем использует $self
для обозначения объекта, объектом которого он является метод.
sub foo {
my $self = shift;
$self->method;
...
return $self->{_foo}
}
Другой способ сделать это состоит в использовании $_[0]
непосредственно вместо копирования $_[0]
в $self
:
sub foo {
$_[0]->method;
...
return $_[0]->{_foo}
}
Теперь, что является более эффективным (быстрее):
выделить памяти к новой переменной
$self
, выберите первый элемент списка@_
и скопируйте это значение на эту переменную каждый раз, когда a метод вызывается;для получения первого элемента массива каждый раз, когда используется
$_[0]
?
Вы ничего не получаете с помощью '$ _ [0] -> метода' с точки зрения скорости (аналогично оптимизации по одиночной или двойной кавычки), только теряя исходную читаемость. –
Такая микро-оптимизация похожа на изменение краски на вашем автомобиле, чтобы ускорить ее работу. Если вы не водитель Формулы-1, разница будет незначительной. – ThisSuitIsBlackNot