Re: Small question about performance
On Thu, Mar 15, 2012 at 5:22 PM, Patrick ALLAERT <[email protected]> wrote:
> 2012/3/15 Nikita Popov <[email protected]>:
>> 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.
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.
Thread (12 messages)