On Thu, Mar 15, 2012 at 4:54 PM, Nikita Popov <nikita....@googlemail.com> wrote:
> On Thu, Mar 15, 2012 at 5:22 PM, Patrick ALLAERT <patrickalla...@php.net> 
> wrote:
>> 2012/3/15 Nikita Popov <nikita....@googlemail.com>:
>>> If I am understanding the text correctly it is saying that
>>>    $f1 = f1();
>>>    $f2 = f2($f1);
>>>    $f3 = f3($f2);
>>> is using more memory than
>>>    $f3 = f3(f2(f1()));
>>>
>>> For me this doesn't make any sense. In the latter case PHP will also
>>> create temporary variables to store the return values. There should be
>>> no difference in memory consumption.
>>
>> It does make sense to me.
>>
>> In the first case, when calling f3(), $f1 is still referenced.
>> In the second case, when calling f3(), the result of f2() is
>> referenced, but there is no more active reference to the result of
>> f1().
> I don't really know when PHP frees temporary variables, but my guess
> was that they are freed when the scope is left.

Each variable has a refcount, then that hits 0 it can be freed up.

>
> If that is not true, then forget whatever I said.
>
> But if it is true, then there is no inherent difference between the
> two version. The only difference is that explicit $variables would
> need an entry in the active symbol table, which is pretty much
> negligible.
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to