Re: Small question about performance
| From: | Patrick ALLAERT | 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 internals+get-58962@lists.php.net to get a copy of this message | ||
2012/3/15 Nikita Popov <nikita.ppv@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().
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
)
)
);
}