2009-01-06 74 views
-5

這篇文章不是一個真正的問題,但它可能是有用的共享一些編碼技巧。優化PHP字符串連接

這是我想與你分享的一個。我將展示4個同樣的事例。但只有最後一個纔是最好的。

$foo = 'John SMITH'; 

echo "Hello $foo, welcome on my website."; 

echo "Hello " . $foo . " welcome on my website."; 

echo 'Hello ' . $foo . ' welcome on my website.'; 

echo 'Hello ', $foo , ' welcome on my website.'; 

我相信大家都知道,echo '$foo'將無法​​正常工作,不過,我敢肯定,你使用雙引號來顯示一個簡單的信息。 這是不好的

好吧,讓我們開始:第一個是壞的(以及第二個),因爲使用雙引號強制PHP掃描字符串以尋找要完成的替換(我的意思是變量)。

第二個是好一點,因爲PHP沒有替代品。

第三個,因爲簡單的引用而更好,這樣語言知道他可以發送文本而不需要處理,但是「壞」的東西是使用了連接(點運算符,就像第二個例子中那樣) 。

最後一個使用簡單的引號和昏迷操作符。爲什麼這個解決方案更好?

那麼,使用第三種解決方案會發生什麼?

php創建一個字符串,其中包含"Hello ",那麼它必須放大它,才能將foo的內容變量(「John SMITH」),然後再放大它以放入" Welcome on my website."句子。 然後,echo可以利用這一點,來...迴音吧:)

而在第四之一,echo做的唯一的事情是發送「你好」,然後$ foo的內容,那麼「歡迎我的網站。」到輸出,就這些! 因爲回聲只是發送文本,而不創建一個字符串,必須放大以包含整個文本(這將是凹的,必須增長(因爲連接),然後顯示。)

我會盡力找回一些基準,並把它們放在這裏。

費爾自由評論或反應,原諒我的英語,這不是我的母語。

+1

你有這方面的表現數據? – brian 2009-01-06 15:23:25

+1

這是有用的信息,但您應該以Stack Overflow的問題/答案格式顯示它。 – rjzii 2009-01-06 15:31:18

+1

@Rob,完全相反,這些信息完全沒用。在現實生活中,你會從這樣的「優化」中獲得**沒有任何**。 – 2011-02-24 07:14:52

回答

7

這是不值得的。你可能會遇到一些即使設法使字符串連接速度提高了30%,整個應用程序的加速比率也提高了0,1%(不要把它加在字面上;速度可以忽略不計);大部分時間將花費在數據庫查詢或模式中複雜的邏輯。

27

它是完全不相關,其溶液效果更好。電腦速度快,CPU週期便宜,因此毫秒優化毫無意義。唯一真正的優化是幫助您更快地讀取代碼,這樣您可以節省寶貴的時間並專注於實際提供工作代碼。

26

創建一個小的(但仍然吮吸:)基準,並運行它產生以下結果:

0.0022029876709 
0.00211095809937 
0.00213599205017 
0.00551700592041 

的最後一個方法顯然是最慢的。

11

優化的三個原則是:

  1. 還不優化。
  2. 不要優化。
  3. 不要優化。

只有在瞭解了放慢速度之後,才能保存最後一件事。

否則,你會把車放在馬前,可以這麼說。