我知道下面三個語句的,紹相同的輸出:回聲與參數和沒有?
echo "Hello" . "World! <br/>";
echo "Hello"; echo "World!", "<br/>";
echo "Hello", "World!", "<br/>";
但有什麼區別性能與特點,爲什麼?
與相比,連接速度如"String" . "String"
慢嗎?
我知道下面三個語句的,紹相同的輸出:回聲與參數和沒有?
echo "Hello" . "World! <br/>";
echo "Hello"; echo "World!", "<br/>";
echo "Hello", "World!", "<br/>";
但有什麼區別性能與特點,爲什麼?
與相比,連接速度如"String" . "String"
慢嗎?
這取決於你的表現是什麼......就操作次數而言,你的第一個例子是最好的(操作次數最少)......你的第二個和第三個例子幾乎完全一樣。
操作碼爲echo "Hello" . "World! <br/>";
HERE
Finding entry points
Branch analysis from position: 0
Return found
filename: /in/oYvSm
function name: (null)
number of ops: 3
compiled vars: none
line # * op fetch ext return operands
---------------------------------------------------------------------------------
3 0 > CONCAT ~0 'Hello', 'World%21+%3Cbr%2F%3E'
1 ECHO ~0
5 2 > RETURN 1
branch: # 0; line: 3- 5; sop: 0; eop: 2
path #1: 0,
操作碼的echo "Hello"; echo "World!", "<br/>";
HERE
Finding entry points
Branch analysis from position: 0
Return found
filename: /in/nMufh
function name: (null)
number of ops: 4
compiled vars: none
line # * op fetch ext return operands
---------------------------------------------------------------------------------
3 0 > ECHO 'Hello'
1 ECHO 'World%21'
2 ECHO '%3Cbr%2F%3E'
5 3 > RETURN 1
branch: # 0; line: 3- 5; sop: 0; eop: 3
path #1: 0,
操作碼的echo "Hello", "World!", "<br/>";
HERE
Finding entry points
Branch analysis from position: 0
Return found
filename: /in/LnPaY
function name: (null)
number of ops: 4
compiled vars: none
line # * op fetch ext return operands
---------------------------------------------------------------------------------
3 0 > ECHO 'Hello'
1 ECHO 'World%21'
2 ECHO '%3Cbr%2F%3E'
4 3 > RETURN 1
branch: # 0; line: 3- 4; sop: 0; eop: 3
path #1: 0,
所以,你Ç清楚地看到你正在對第二個和第三個例子使用一個額外的echo
操作。但是,這些示例中的性能(讀取速度)幾乎可以忽略不計。
點運算符是最快的。你可以把它放在一個循環,並定時輸出測試這一點,因爲在這裏看到:
http://www.sitepoint.com/high-performance-string-concatenation-in-php/
第2和第3是等價的。
使用逗號稍微快一些,因爲它不使用串接。
此外,使用逗號與PHP的其餘部分不一致。因此,使用點運算符也是清晰的。 – TotalWipeOut 2013-05-14 15:37:09