|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 17 Aug 2004 13:27:40 To : Alexander Reznikov Subject : Re: Ссылка на хэш -------------------------------------------------------------------------------- Alexander Reznikov -> Serge Chervjakov @ Sat, 31 Jul 2004 22:05:08 +0400: AR> Как-то Serge Chervjakov писал к Roman V Tchemisov, но я услышал и решил AR> ответить : RVT>>> Какой вариант создания ссылки на хэш лучше: \%hash или {%hash}? SC>> Hе буду на коде оказывать ибо и самому лень разбирать и тебе будет SC>> неинтересно:). Hо только скажу, что да - \%hash - работает быстрее, SC>> чем {%hash}. Hо это две большие разницы... Первая - возращает ссылку SC>> на хеш %hash, а {%hash} возращает ссылку на другой хеш - не %hash. SC>> Т.е. если тебе критично, что бы %hash не менялся в дальнейшем коде, то SC>> именно {%hash}. Если %hash используется лишь раз в этой функции, то SC>> \%hash. AR> А вот такой вопрос. Как проще (и быстрее) всего получить указатель AR> на массив, возвращаемый неким оператором или функцией? Что-то я AR> немного на этом сегодня застрял. AR> Пример (не совсем минималистический, но чтобы понятнее было): AR> map { head_decode($_, $charset) } $head->get($name); AR> Hужно получить указатель на массив без использования временных переменных. AR> Сейчас так: AR> return [ map { head_decode($_, $charset) } $head->get($name) ]; AR> В документации перловой описан именно такой путь. Hо что-то меня терзают AR> сомнения... Как я понимаю: AR> 1. Создаётся анонимный массив с результатом map'а. AR> 2. Массив копируется в другой анонимный массив. AR> 3. Уже на этот второй массив создаётся ссылка. AR> Или я заблуждаюсь? Заблуждаешься. Возвращается список, а не массив. То есть, может быть, на уровне потрохов перла и можно получить на эту штуку ссылку, а тут - никак, на список ссылок не бывает. [] создает из списка массив и возвращает ссылку на него. Вариант с временной переменной будет делать то же самое. Да, не исключено, что на уровне потрохов же это дело и оптимизируется, и операция [ список ] не копирует сам список - как максимум, создает служебную структуру собственно массива. Hо это надо в потроха ползать, чтобы проверить. -- Artem Chuprina RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757 --- ifmail v.2.15dev5.3 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/25606ffa3a147.html, оценка из 5, голосов 10
|