2012-05-16 70 views
1

可能重複:
Is there a performance benefit single quote vs double quote in php?PHP字符串常量和編譯器優化

如果PHP代碼定義不包含變量串在使用"■當需要一個性能命中我想知道,與不執行額外解析的'相比較。

例如,PHP將嘗試解析由"而不是'定義的字符串內部的變量。

$myString = "Greetings earthlings!"; 
echo '$myString'; //literally outputs the string '$myString' 
echo "$myString"; //literally outputs the string "Greetings earthlings" 

所以我的問題是,這一切的時候,我一直在寫這樣的代碼:

echo "Greetings earthlings"; 

我就一直在浪費週期?或者PHP智能/優化,足以知道我真的意味着

echo 'Greetings earthlings'; 

+2

是的,但它很小,它不是一個真正的考慮因素。網絡上某處存在差異的基準。但你可以在不到一分鐘的時間內完成自己的工作。 http://www.phpbench.com/ – 2012-05-16 04:19:14

回答

5

VLD工作的一個位告訴我說,這兩個程序編譯成字節碼相同(使用PHP 5.3):

line  # * op       fetch   ext return operands 
--------------------------------------------------------------------------------- 
    2  0 > ECHO              'Hello+world' 
    3  1 > RETURN             1 

結論:在PHP的現代版本絕對沒有什麼區別。沒有任何。使用任何最適合你的方式。


有,然而,echo "Hello $world"之間的差異:

compiled vars: !0 = $world 
line  # * op       fetch   ext return operands 
--------------------------------------------------------------------------------- 
    1  0 > ADD_STRING          ~0  'Hello+' 
     1  ADD_VAR           ~0  ~0, !0 
     2  ECHO              ~0 
     3 > RETURN             null 

而且echo "Hello " . $world

compiled vars: !0 = $world 
line  # * op       fetch   ext return operands 
--------------------------------------------------------------------------------- 
    1  0 > CONCAT           ~0  'Hello+', !0 
     1  ECHO              ~0 
     2 > RETURN             null 

我會毫不猶豫地稱之爲顯著,雖然。實際的真實世界的性能差異很可能是微不足道的。

+1

+1 QED,這個答案應該與原來的副本合併..非常好 – styler1972

1

可以運行基準來查看。我爲PHP 4做了,發現做字符串連接要比嵌入變量快得多(一個數量級?我記不清了)。相比之下,雙引號中的簡單字符串僅比單引號略快。

但那是針對PHP 。我稍後在PHP 上運行了相同的測試,性能差異幾乎可以忽略不計。

+0

+1,爲真。感謝您的輸入 – styler1972