Re: Performance and Function Calls

From: Date: Tue, 18 Mar 2003 17:24:34 +0000
Subject: Re: Performance and Function Calls
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-140123@lists.php.net to get a copy of this message
Thanks Jason. I was hoping that was what was happening. Happy php'ing --Noah ----- Original Message ----- From: "Jason Sheets" <jsheets@php.net> To: "Don Read" <dread@texas.net> Cc: "CF High" <noah@newminddesign.com>; <php-general@lists.php.net> Sent: Saturday, March 15, 2003 8:46 PM Subject: RE: [PHP] Performance and Function Calls > Storing the results of a function in a variable and referencing the > variable will almost always be faster, this should be no surprise > because instead of executing the function PHP just has to return the > variable's value. > > In #1 since you only call the function once the function is only > executed once, in a loop it is executed once for each loop iteration. > > Jason > > On Sat, 2003-03-15 at 21:25, Don Read wrote: > > On 15-Mar-2003 CF High wrote: > > > Hey all. > > > > > > Quick question: > > > > > > If I have a function that, say, prints out the months in a year, and I > > > call > > > that function within a 10 cycle loop, which of the following is faster: > > > > > > 1) Have function months() return months as a string; set var > > > string_months = months() outside of the loop; then echo string_months > > > within > > > the loop > > > > > > -- OR > > > > > > 2) Just call months() for each iteration through the loop > > > > > > I'm not sure how PHP interprets option number 1. > > > > > > Guidance for the clueless much appreciated........... > > > > > > > Easy enuff to test: > > > > <?php > > > > function getmicrotime(){ > > list($usec, $sec) = explode(" ",microtime()); > > return ((float)$usec + (float)$sec); > > } > > > > $time_start = getmicrotime(); > > for ($m=1; $m <11; $m++) { > > echo date('F', strtotime("2003-$m-1")), '<br>'; > > } > > echo '<P>A: ', getmicrotime() - $time_start , '<P>'; > > > > $time_start = getmicrotime(); > > for ($m=1; $m <11; $m++) { > > $str[]=date('F', strtotime("2003-$m-1")); > > } > > echo implode('<br>',$str); > > echo '<P>B: ', getmicrotime() - $time_start , '<P>'; > > > > unset($str); > > $time_start = getmicrotime(); > > for ($m=1; $m <11; $m++) { > > $str[]=date('F', strtotime("2003-$m-1")); > > } > > > > while (list(,$v)= each($str)) { > > echo $v, '<br>'; > > } > > echo '<P>C: ', getmicrotime() - $time_start , '<P>'; > > > > ?> > > > > On my machine I get numbers like: > > A: 0.000907063484192 > > B: 0.000651001930237 > > C: 0.000686049461365 > > > > The function call within the loop is slower (contrary to what I > > expected), the real question is how much effort do you want to expend to > > save 2-3 micro-seconds? > > > > Regards, > > -- > > Don Read dread@texas.net > > -- It's always darkest before the dawn. So if you are going to > > steal the neighbor's newspaper, that's the time to do it. > -- > Jason Sheets <jsheets@php.net> >

« previous php.general (#140123) next »