Concatenation vs. Interpolation

Concatenation vs. Interpolation

am 11.08.2007 09:21:25 von AmirBehzad Eslami

------=_Part_19167_7561834.1186816885119
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi,

FASTER CODE!

This question involves Coding Style, Readability, Write-ability and
Performance.
Some people use the . operator to concat an string to a variable, some
people use interpolation (embeding variable into string).

=====================
1st Method (Concatenation)
$str = 'My name is ' . $name;

2nd Method (Interpolation)
$str = "My name is $name";
=====================

I know that the 1st Method is much faster, according to
some benchmarks, which one of them is available
in the book "Advanced PHP Programming, page 470".

Could we consider the 1st Method as a "Best Practice", which offers
better Performance?

I know that the performance here is not very much, but is it
considerable in a high-traffic website?

Thank you in advanced for sharing your opinions,
Behzad

------=_Part_19167_7561834.1186816885119--

Re: Concatenation vs. Interpolation

am 11.08.2007 16:10:03 von tijnema

On 8/11/07, AmirBehzad Eslami wrote:
> Hi,
>
> FASTER CODE!
>
> This question involves Coding Style, Readability, Write-ability and
> Performance.
> Some people use the . operator to concat an string to a variable, some
> people use interpolation (embeding variable into string).
>
> =====================
> 1st Method (Concatenation)
> $str = 'My name is ' . $name;
>
> 2nd Method (Interpolation)
> $str = "My name is $name";
> =====================
>
> I know that the 1st Method is much faster, according to
> some benchmarks, which one of them is available
> in the book "Advanced PHP Programming, page 470".
>
> Could we consider the 1st Method as a "Best Practice", which offers
> better Performance?
>
> I know that the performance here is not very much, but is it
> considerable in a high-traffic website?
>
> Thank you in advanced for sharing your opinions,
> Behzad
>

Code readability is quite important when working with a team on a
project, and if you got for method 1 on things like this:
$str = '';
It gets quite inreadable, having a double qoute next to a single quote.
while this looks much better:
$str = "
";

I just did some benchmarks myself, and you can see that concatenation
is definitly a little bit fast, but it's only 2 seconds on 10 million
loops:
For 10,000,000 loops:
Concatenation single quote:5.62786102295
Concatenation double quote:5.63359999657
Interpolation:7.32201290131

Test code used:

$x = 0;
$str = '';
$add = '?';

$time[1] = microtime(TRUE);
for($x = 0; $x < 10000000; $x++) {
$str = '
';
}
$time[2] = microtime(TRUE);

$x = 0;
$str = '';
$add = '?';

$time[3] = microtime(TRUE);
for($x = 0; $x < 10000000; $x++) {
$str = "
";
}
$time[4] = microtime(TRUE);

$x = 0;
$str = '';
$add = 'def';

$time[5] = microtime(TRUE);
for($x = 0; $x < 10000000; $x++) {
$str = "
";
}
$time[6] = microtime(TRUE);

echo 'For 10,000,000 loops:';
echo '
Concatenation single quote:'.($time[2]-$time[1]);
echo '
Concatenation double quote:'.($time[4]-$time[3]);
echo '
Interpolation:'.($time[6]-$time[5]);

?>

Tijnema

--
Vote for PHP Color Coding in Gmail! -> http://gpcc.tijnema.info

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Re: Concatenation vs. Interpolation

am 11.08.2007 16:48:19 von AmirBehzad Eslami

------=_Part_20251_20343394.1186843699798
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64
Content-Disposition: inline

WW91J3JlIHJpZ2h0LiBUaGVyZSBpcyBhIGxvdyBiZW5lZml0IGluIHBlcmZv cm1hbmNlLiBCdXQg
SSB0aGluayBpdCdzCnZhbHVhYmxlCmluIGhpZ2gtdHJhZmZpYyB3ZWJzaXRl cy4gT2YgY291cnNl
LCB3ZSBzaG91bGQgY29uc2lkZXIgYSBsb3Qgb2YgdGhpbmcgdG8KaGF2ZSBh IGJldHRlciBwZXJm
b3JtYW5jZSwgYnV0IENvbmNhdGVuYXRpb24sIElNTywgaXMgdGhlIGJlc3Qg cHJhY3RpY2UuCkxl
dCBtZSBleHBsYWluOgoK2Y5BY3R1YWxseSwgdGhlIHByb2dyYW1tZXJzJyBw cmVmZXJlbmNlIG9u
IHJlYWRhYmlsaXR5IGFuZCB3cml0ZS1hYmlsaXR5CnZhcmllcy4KSSB0aGlu ayB0aGF0IGNvbmNh
dGVuYXRpb24gcHJvdmlkZXMgYSBtb3JlIHJlYWRhYmxlIHN5bnRheCwgc2lu Y2UgaXQKYWxsb3dz
IHVzIHRvIGRpc3Rpbmd1aXNoIHZhcmlhYmxlcyBmcm9tIHBsYWluIHN0cmlu Z3MgdmVyeSBlYXNp
bHkuCkNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgY29kZToKCiRzdHIgPSAnTXkg bmFtZSBpcyAnIC4g
JG5hbWUgLiAnIGFuZCBJIGxpdmUgaW4gJyAuICRjaXR5OwpWUy4KJHN0ciA9 ICJNeSBuYW1lIGlz
ICRuYW1lIGFuZCBJIGxpdmUgaW4gJGNpdHkiOwoKKFlvdSBtYXkgdmlldyB0 aGUgYWJvdmUgY29k
ZSBpbiBhbiBFZGl0b3Igd2l0aCBzeW50YXgtaGlnaGxpZ2h0aW5nCmNhcGFi aWxpdHkgZm9yIGEg
YmV0dGVyIHJlc3VsdCkuIEhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIHRvIG9m ZmVyCm9wcG9zaXRl
IGV4YW1wbGVzLgoKSW4gYWRkaXRpb24gdG8gdGhlIFBlcmZvcm1hbmNlIG9u IFNwZWVkLCBDb25j
YXRlbmF0aW9uIHVzZXMgbGVzcyBtZW1vcnkKdGhhbiBJbnRlcnBvbGF0aW9u LCBhcyBleHBsYWlu
ZWQgaW4gUEhQIE1hbnVhbC4gVGFrZSBhIGxvb2sgYXQgdGhlCmZvbGxvd2lu ZyBVUkw6CgpodHRw
Oi8vdXMyLnBocC5uZXQvbWFudWFsL2VuL2xhbmd1YWdlLnR5cGVzLnN0cmlu Zy5waHAKClF1b3Rl
OgpOb3RlOiAgUGFyc2luZyB2YXJpYWJsZXMgd2l0aGluIHN0cmluZ3MgdXNl cyBtb3JlIG1lbW9y
eSB0aGFuIHN0cmluZwpjb25jYXRlbmF0aW9uLiBXaGVuIHdyaXRpbmcgYSBQ SFAgc2NyaXB0IGlu
IHdoaWNoIG1lbW9yeSB1c2FnZSBpcyBhIGNvbmNlcm4sCmNvbnNpZGVyIHVz aW5nIHRoZSBjb25j
YXRlbmF0aW9uIG9wZXJhdG9yICguKSByYXRoZXIgdGhhbiB2YXJpYWJsZSBw YXJzaW5nCgpUaHVz
LCBJIHRoaW5rIHRoYXQgaXQgaXMgYmV0dGVyIHRvIHVzZSBDb25jYXRlbmF0 aW9uIGluc3RlYWQg
b2YKSW50ZXJwb2xhdGlvbi4KU2luY2UgaXQgcHJvdmlkZXMgUGVyZm9ybWFu Y2UsIGJvdGggb24g
U3BlZWQgYW5kIE1lbW9yeSBVc2FnZS4KClRoZXJlIGlzIGEgYmVuY2htYXJr IGF2YWlsYWJsZSBo
ZXJlOgpodHRwOi8vdXMyLnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLnBy aW50LnBocCM2NjM5
MgoKCk9uIDgvMTEvMDcsIFRpam5lbWEgPHRpam5lbWFAZ21haWwuY29tPiB3 cm90ZToKPgo+IE9u
IDgvMTEvMDcsIEFtaXJCZWh6YWQgRXNsYW1pIDxiZWh6YWQuZXNsYW1pQGdt YWlsLmNvbT4gd3Jv
dGU6Cj4gPiBIaSwKPiA+Cj4gPiBGQVNURVIgQ09ERSEKPiA+Cj4gPiBUaGlz IHF1ZXN0aW9uIGlu
dm9sdmVzIENvZGluZyBTdHlsZSwgUmVhZGFiaWxpdHksIFdyaXRlLWFiaWxp dHkgYW5kCj4gPiBQ
ZXJmb3JtYW5jZS4KPiA+IFNvbWUgcGVvcGxlIHVzZSB0aGUgLiBvcGVyYXRv ciB0byBjb25jYXQg
YW4gc3RyaW5nIHRvIGEgdmFyaWFibGUsIHNvbWUKPiA+IHBlb3BsZSB1c2Ug aW50ZXJwb2xhdGlv
biAoZW1iZWRpbmcgdmFyaWFibGUgaW50byBzdHJpbmcpLgo+ID4KPiA+ID09 PT09PT09PT09PT09
PT09PT09PQo+ID4gMXN0IE1ldGhvZCAoQ29uY2F0ZW5hdGlvbikKPiA+ICRz dHIgPSAnTXkgbmFt
ZSBpcyAnIC4gJG5hbWU7Cj4gPgo+ID4gMm5kIE1ldGhvZCAoSW50ZXJwb2xh dGlvbikKPiA+ICRz
dHIgPSAiTXkgbmFtZSBpcyAkbmFtZSI7Cj4gPiA9PT09PT09PT09PT09PT09 PT09PT0KPiA+Cj4g
PiBJIGtub3cgdGhhdCB0aGUgMXN0IE1ldGhvZCBpcyBtdWNoIGZhc3Rlciwg YWNjb3JkaW5nIHRv
Cj4gPiBzb21lIGJlbmNobWFya3MsIHdoaWNoIG9uZSBvZiB0aGVtIGlzIGF2 YWlsYWJsZQo+ID4g
aW4gdGhlIGJvb2sgIkFkdmFuY2VkIFBIUCBQcm9ncmFtbWluZywgcGFnZSA0 NzAiLgo+ID4KPiA+
IENvdWxkIHdlIGNvbnNpZGVyIHRoZSAxc3QgTWV0aG9kIGFzIGEgIkJlc3Qg UHJhY3RpY2UiLCB3
aGljaCBvZmZlcnMKPiA+IGJldHRlciBQZXJmb3JtYW5jZT8KPiA+Cj4gPiBJ IGtub3cgdGhhdCB0
aGUgcGVyZm9ybWFuY2UgaGVyZSBpcyBub3QgdmVyeSBtdWNoLCBidXQgaXMg aXQKPiA+IGNvbnNp
ZGVyYWJsZSBpbiBhIGhpZ2gtdHJhZmZpYyB3ZWJzaXRlPwo+ID4KPiA+IFRo YW5rIHlvdSBpbiBh
ZHZhbmNlZCBmb3Igc2hhcmluZyB5b3VyIG9waW5pb25zLAo+ID4gQmVoemFk Cj4gPgo+Cj4gQ29k
ZSByZWFkYWJpbGl0eSBpcyBxdWl0ZSBpbXBvcnRhbnQgd2hlbiB3b3JraW5n IHdpdGggYSB0ZWFt
IG9uIGEKPiBwcm9qZWN0LCBhbmQgaWYgeW91IGdvdCBmb3IgbWV0aG9kIDEg b24gdGhpbmdzIGxp
a2UgdGhpczoKPiAkc3RyID0gJzxhIGhyZWY9IicuJHVybC4iJz4nOwo+IEl0 IGdldHMgcXVpdGUg
aW5yZWFkYWJsZSwgaGF2aW5nIGEgZG91YmxlIHFvdXRlIG5leHQgdG8gYSBz aW5nbGUgcXVvdGUu
Cj4gd2hpbGUgdGhpcyBsb29rcyBtdWNoIGJldHRlcjoKPiAkc3RyID0gIjxh IGhyZWY9JyR1cmwn
PiI7Cj4KPiBJIGp1c3QgZGlkIHNvbWUgYmVuY2htYXJrcyBteXNlbGYsIGFu ZCB5b3UgY2FuIHNl
ZSB0aGF0IGNvbmNhdGVuYXRpb24KPiBpcyBkZWZpbml0bHkgYSBsaXR0bGUg Yml0IGZhc3QsIGJ1
dCBpdCdzIG9ubHkgMiBzZWNvbmRzIG9uIDEwIG1pbGxpb24KPiBsb29wczoK PiBGb3IgMTAsMDAw
LDAwMCBsb29wczoKPiBDb25jYXRlbmF0aW9uIHNpbmdsZSBxdW90ZTo1LjYy Nzg2MTAyMjk1Cj4g
Q29uY2F0ZW5hdGlvbiBkb3VibGUgcXVvdGU6NS42MzM1OTk5OTY1Nwo+IElu dGVycG9sYXRpb246
Ny4zMjIwMTI5MDEzMQo+Cj4gVGVzdCBjb2RlIHVzZWQ6Cj4gPD9waHAKPgo+ ICR4ID0gMDsKPiAk
c3RyID0gJyc7Cj4gJGFkZCA9ICc/JzsKPgo+ICR0aW1lWzFdID0gbWljcm90 aW1lKFRSVUUpOwo+
IGZvcigkeCA9IDA7ICR4IDwgMTAwMDAwMDA7ICR4KyspIHsKPiAgICAgICAg ICRzdHIgPSAnPGEg
aHJlZj0iJy4kYWRkLiciPic7Cj4gfQo+ICR0aW1lWzJdID0gbWljcm90aW1l KFRSVUUpOwo+Cj4g
JHggPSAwOwo+ICRzdHIgPSAnJzsKPiAkYWRkID0gJz8nOwo+Cj4gJHRpbWVb M10gPSBtaWNyb3Rp
bWUoVFJVRSk7Cj4gZm9yKCR4ID0gMDsgJHggPCAxMDAwMDAwMDsgJHgrKykg ewo+ICAgICAgICAg
JHN0ciA9ICI8YSBocmVmPSciLiRhZGQuIic+IjsKPiB9Cj4gJHRpbWVbNF0g PSBtaWNyb3RpbWUo
VFJVRSk7Cj4KPiAkeCA9IDA7Cj4gJHN0ciA9ICcnOwo+ICRhZGQgPSAnZGVm JzsKPgo+ICR0aW1l
WzVdID0gbWljcm90aW1lKFRSVUUpOwo+IGZvcigkeCA9IDA7ICR4IDwgMTAw MDAwMDA7ICR4Kysp
IHsKPiAgICAgICAgICRzdHIgPSAiPGEgaHJlZj0nJGFkZCc+IjsKPiB9Cj4g JHRpbWVbNl0gPSBt
aWNyb3RpbWUoVFJVRSk7Cj4KPiBlY2hvICdGb3IgMTAsMDAwLDAwMCBsb29w czonOwo+IGVjaG8g
JzxiciAvPkNvbmNhdGVuYXRpb24gc2luZ2xlIHF1b3RlOicuKCR0aW1lWzJd LSR0aW1lWzFdKTsK
PiBlY2hvICc8YnIgLz5Db25jYXRlbmF0aW9uIGRvdWJsZSBxdW90ZTonLigk dGltZVs0XS0kdGlt
ZVszXSk7Cj4gZWNobyAnPGJyIC8+SW50ZXJwb2xhdGlvbjonLigkdGltZVs2 XS0kdGltZVs1XSk7
Cj4KPiA/Pgo+Cj4gVGlqbmVtYQo+Cj4gLS0KPiBWb3RlIGZvciBQSFAgQ29s b3IgQ29kaW5nIGlu
IEdtYWlsISAtPiBodHRwOi8vZ3BjYy50aWpuZW1hLmluZm8KPgo=
------=_Part_20251_20343394.1186843699798--

Re: Concatenation vs. Interpolation

am 13.08.2007 04:04:41 von Danial Rahmanzadeh

------=_Part_138850_29817396.1186970681425
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

In my opinion, concatenation reduces code readability because unlike
java(that uses + operator), php uses dot(.) for concatenation consider the
following codes:
//java
String mystr="hello"+"world";
is more readable from:
//php
$mystr="hello"."world";

if you only need echoing something to output(which is not usually the case
in MVC and/or other effective methods), the fastest way is using comma:
echo 'hello',$mystr,"blah","blah" ;

------=_Part_138850_29817396.1186970681425--

Re: Concatenation vs. Interpolation

am 13.08.2007 23:06:00 von Richard Lynch

On Sat, August 11, 2007 2:21 am, AmirBehzad Eslami wrote:
> I know that the performance here is not very much, but is it
> considerable in a high-traffic website?

It's almost for sure meaningless in any real-world website.

Use "valgrind callgrind" to find your real bottlenecks, and focus on
those instead of wasting your time optimizing meaningless snippets of
code.

--
Some people have a "gift" link here.
Know what I want?
I want you to buy a CD from some indie artist.
http://cdbaby.com/browse/from/lynch
Yeah, I get a buck. So?


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php