2011-11-19 55 views
0

可能重複:
php echo vs open&close tag回聲比使用回聲慢嗎?

例如。是這樣的:

<p>Hello welcome to my site</p> 
<p>Your name is <? echo $name; ?>!</p> 
<p>Your age is <? echo $age; ?>!</p> 
<p>Your email address is <? echo $email; ?>!</p> 

比這更快或更慢:

<? 
echo "<p>Hello welcome to my site</p>"; 
echo "<p>Your name is " . $name . "!</p>"; 
echo "<p>Your age is " . $age . "!</p>"; 
echo "<p>Your email address is " . $email . "!</p>"; 
?> 

如果網站沒有獲得數以百萬計的頁面瀏覽量......?

+1

是真的有爭議... http://www.phpbench.com/ – ajreal

+0

我假設產生字符串,然後在最後有一個回聲會更好,但是這需要測試。 –

+0

感謝您的鏈接ajreal – supercoolville

回答

3

第一代碼片段收益率這個Zend公司代碼:

ECHO '%3Cp%3EHello+welcome+to+my+site%3C%2Fp%3E%0A%3Cp%3EYour+name+is+' 
ECHO !0 
ECHO '%21%3C%2Fp%3E%0A%3Cp%3EYour+age+is+' 
ECHO !1 
ECHO '%21%3C%2Fp%3E%0A%3Cp%3EYour+email+address+is+' 
ECHO !2                      ECHO '%21%3C%2Fp%3E%0A' 

,第二個:

ECHO '%3Cp%3EHello+welcome+to+my+site%3C%2Fp%3E' 
CONCAT ~0 '%3Cp%3EYour+name+is+', !0 
CONCAT ~1 ~0, '%21%3C%2Fp%3E' 
ECHO ~1 
CONCAT ~2 '%3Cp%3EYour+age+is+', !1 
CONCAT ~3 ~2, '%21%3C%2Fp%3E' 
ECHO ~3 
CONCAT ~4 '%3Cp%3EYour+email+address+is+', !2 
CONCAT ~5 ~4, '%21%3C%2Fp%3E' 
ECHO ~5 

由此我得出結論,第一個變體實際上是更快,因爲沒有多餘的字符串複製由於CONCAT的。

+0

您是如何製作的?似乎我的理解有一個基本的差距! –

+0

這通常通過xdebug優化雖然 – Evert

+0

@Rich Bradshaw我已經使用VLD php擴展。見http://pecl.php.net/package/vld – arrowd

0

即使擁有數百萬的頁面瀏覽量,使用echo的機會也不會成爲任何網站性能的瓶頸。如果該網站具有更復雜的組件(例如數據庫查詢),那麼首先優化它們會更有利。

5

請注意不成熟的優化和微觀優化。雖然一方可能比另一方更快,但兩者速度都很快,所以在大多數實際情況下,差異可能會變得無關緊要。

機會是數據庫訪問中代碼的最大瓶頸。在大多數項目中,情況通常如此。優化您的查詢以便快速運行並僅返回相關數據,並優化代碼以僅查詢需要的時間,並且緩存結果以避免重複查詢,這比返回來自PHP的轉義回聲的性能要好得多。

從個人的角度來說,我傾向於傾向於逃離PHP,並在純粹的美學原因下儘可能使用HTML,即IDE可以識別HTML標記併爲我突出顯示它。對於團隊中不熟悉PHP的設計人員來說,這也會讓生活變得更輕鬆。