Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Sergey Skvortsov                     2:5020/400     05 Jan 2004  12:26:14
 To : Kan
 Subject : Re: ссылки на строки
 -------------------------------------------------------------------------------- 
 
 kan wrote:
 
 >  SS> сравниваем PV и ужасаемся.
 > SV = PV(0x1a7eb60) at 0x1a72ff0
 >   PV = 0x1a70a38 "test"\0
 > SV = RV(0x1a8ab2c) at 0x1a72f9c
 >     PV = 0x1a70a38 "test"\0
 
 > А почему это тебя не заставляет pадоваться я
 
 никак понять не могу?
 
 Hе можешь? Поясняю. Представь, что в $a 10
 мегабайт текста.
 $b=$a
 приводит именно к удвоению затрачиваемой памяти.
 Хотя, возможно, ты $b никогда не вздумаешь
 модифицировать.
 
 Так что, к примеру, вызов
 func($a);
 
 sub func  {
   my $b=shift;
   print $b;
 }
 
 Приводит к неуместному копированию.
 
 Обычный print не понимает, если ему дать ссылку на
 скаляр - он честно вызывает аналог
 overload::Stringify и радует чем-то типа
 SCALAR(0x423423).
 
 Apache::Request->print очень даже удобно
 воспринимает ссылку - автоматически делая
 dereference. Так же обещается в обычном print в Perl6.
 
 Разумеется можно жить и с ссылками на скаляр. Hо
 смысл? Hеудобно.
 
 Во флагах структуры SV уже есть замечательный флаг
 SvFAKE,
 который позволяет одному sv хранить реальный PV, а
 другому - помеченному как FAKE - иметь в PV тот же
 адрес - но не освобождаемый при destroy скаляра и
 автоматически (почти) копируемый при изменении
 скалара.
 Если вы знаете fork() - идея должна быть понятной.
 
 Идеальной была бы новая альтернативная операция
 присваивания, например:
 $b===$a;
 которая реализовывала бы подобную логику.
 
 Hо, увы, не всё так просто.
 
 -- 
 Sergey Skvortsov
 mailto: skv@protey.ru
 Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
 --- ifmail v.2.15dev5.1
  * Origin: Talk.ru (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: ссылки на строки   Artem Chuprina   28 Dec 2003 22:08:10 
 Re: ссылки на строки   Sergey Skvortsov   28 Dec 2003 23:30:21 
 ссылки на строки   kan   29 Dec 2003 19:03:14 
 Re: ссылки на строки   Sergey Skvortsov   05 Jan 2004 12:26:14 
 ссылки на строки   kan   07 Jan 2004 02:31:01 
Архивное /ru.perl/6488ade0a296.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional