Re: Small question about performance

From: Date: Thu, 15 Mar 2012 16:22:28 +0000
Subject: Re: Small question about performance
References: 1 2  Groups: php.internals 
Request: Send a blank email to [email protected] to get a copy of this message
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().

Regarding the original problem:
foreach($a as $key => $val) {
    $a[$key] = someLong(functionCalls(hereThat($spanOver85Chars)));
}

Sounds easier to split over lines without temporary zvals:
foreach($a as $key => $val) {
    $a[$key] = someLong(
        functionCalls(
            hereThat(
                $spanOver85Chars
            )
        )
    );
}


Thread (12 messages)

« previous php.internals (#58962) next »