Re: Re: optimilize web page loading

From: Date: Fri, 28 Mar 2008 09:51:04 +0000
Subject: Re: Re: optimilize web page loading
References: 1 2 3 4 5 6 7 8 9 10  Groups: php.general 
Request: Send a blank email to php-general+get-272210@lists.php.net to get a copy of this message
Eric Butera wrote:
On Thu, Mar 27, 2008 at 12:41 PM, Peter Ford <pete@justcroft.com> wrote:
Jason Pruim wrote:
On Mar 27, 2008, at 11:05 AM, Shawn McKenzie wrote:
Al wrote:
Good point. I usually do use the single quotes, just happened to key doubles for the email. Actually, it's good idea for all variable assignments. Philip Thompson wrote:
On Mar 26, 2008, at 6:28 PM, Al wrote:
Depends on the server and it's load. I've strung together some rather large html strings and they aways take far less time than the transient time on the internet. I used to use OB extensively until one day I took the time to measure the difference. I don't recall the numbers; but, I do recall it was not worth the slight extra trouble to use OB. Now, I simple assemble by html strings with $report .= "foo"; And then echo $report at the end. It also makes the code very easy to read and follow.
You might as well take it a step further. Change the above to: $report .= 'foo'; This way for literal strings, the PHP parser doesn't have to evaluate this string to determine if anything needs to be translated (e.g., $report .= "I like to $foo"). A minimal speedup, but nonetheless... ~Philip
Andrew Ballard wrote:
On Wed, Mar 26, 2008 at 1:18 PM, Al <news@ridersite.org> wrote:
You are really asking an HTML question, if you think about it. At the PHP level, either use output buffering or assemble all your html string as a variable and then echo it. The goal is to compress the string into the minimum number of packets.
Yes, but do so smartly. Excessive string concatenation can slow things down as well. On most pages you probably won't notice much difference, but I have seen instances where the difference was painfully obvious. Andrew
Yes and if your script takes .00000000000000000000000000000002 seconds to run using double quotes it will only take .000000000000000000000000000000019 seconds with single (depending upon how many quotes you have of course) :-)
I'm coming in late to this thread so sorry if I missed this :) How much of a difference would it make if you have something like this: echo "$foo bar bar bar bar $foo $foo"; verses: echo $foo . "bar bar bar bar" . $foo $foo; ?In other words... You have a large application which is most likely to be faster? :)
There was a discussion about this a few weeks ago - ISTR that the compiler does wierd things with double-quoted strings, something like tokenising the words and checking each bit for lurking variables. So in fact echo "$foo bar bar bar bar $foo $foo"; is slowest (because there *are* variables to interpolate, echo $foo . " bar bar bar bar ".$foo." ".$foo; is a bit faster, but the double-quoted bits cause some slow-down, echo $foo . ' bar bar bar bar '.$foo.' '.$foo; is a bit faster again - the single quoted bits pass through without further inspection, and finally echo $foo,' bar bar bar bar ',$foo,' ',$foo; is actually the fastest, because the strings are not concatenated before output. I think that was the overall summary - I can't locate the original post to verify (or attribute) but it's in this list somewhere... Cheers --
 Peter Ford                              phone: 01580 893333
 Developer                               fax:   01580 893399
Justcroft International Ltd., Staplehurst, Kent -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Can you prove these statements with real benchmarks that are current? Ilia said that it is a myth that there is a performance difference between " and ' in one of his talks.
I found one recent post on the subject in gmane: http://article.gmane.org/gmane.comp.php.general/169028 The poster's results are as I remembered, except that was building a string, not echoing: possibly not quite the same. So I tried it myself, adapting to using echo (to the ob to avaoid printing forty million * "foo bar bar ..."). For an extra wheeze, I also tried <?=$foo?> syntax embedded in HTML to see if that is as bad as people make out. I didn't try HEREDOC syntax, because it is difficult to reproduce exactly the same output - newlines get added to the output. To get thing to run I needed to increase time out, and reduce the string to avoid filling the PHP memory limit I have set at the moment. Here is the code: <?php ini_set('max_execution_time',300); $foo = 'f'; ob_start(); $time[1] = microtime(TRUE); for($x = 0; $x < 10000000; $x++){
    echo "$foo b b b b $foo $foo";
} $time[2] = microtime(TRUE); ob_end_clean(); ob_start(); $time[3] = microtime(TRUE); for($x = 0; $x < 10000000; $x++){
    echo $foo . ' b b b b '.$foo.' '.$foo;
} $time[4] = microtime(TRUE); ob_end_clean(); ob_start(); $time[5] = microtime(TRUE); for($x = 0; $x < 10000000; $x++){
    echo $foo . " b b b b ".$foo." ".$foo;
} $time[6] = microtime(TRUE); ob_end_clean(); ob_start(); $time[7] = microtime(TRUE); for($x = 0; $x < 10000000; $x++){
    echo $foo,' b b b b ',$foo,' ',$foo;
} $time[8] = microtime(TRUE); ob_end_clean(); ob_start(); $time[9] = microtime(TRUE); for($x = 0; $x < 10000000; $x++){ ?><?=$foo?> b b b b <?=$foo?> <?=$foo?><?php } $time[10] = microtime(TRUE); ob_end_clean(); echo 'For 10,000,000 loops:'; echo '<br />Interpolation:',($time[2]-$time[1]); echo '<br />Concatenation single quote:',($time[6]-$time[5]); echo '<br />Concatenation double quote:',($time[4]-$time[3]); echo '<br />List:',($time[8]-$time[7]); ?> The results are slightly different to what I expected: For 10,000,000 loops: Interpolation:13.385520935059 Concatenation single quote:14.523960828781 Concatenation double quote:14.472594976425 List:11.083581924438 Embedded in HTML:16.329668045044 So, it looks like for echoing at least then single quotes are actually marginally slower than double quotes, and interpolation is faster. Embedding in HTML *is* slower, and the comma-separated list syntax is fastest. I suspect YMMV... -- Peter Ford phone: 01580 893333 Developer fax: 01580 893399 Justcroft International Ltd., Staplehurst, Kent

« previous php.general (#272210) next »