首頁 >後端開發 >php教程 >print vs echo,哪一個比較快?

print vs echo,哪一個比較快?

藏色散人
藏色散人原創
2019-01-28 11:13:363374瀏覽

和我們大多數人一樣,我厭倦了閱讀關於無意義的微優化的部落格文章,例如用echo替換print,用$i 替換 $i,或用單引號替換雙引號。為什麼?因為99.999999%的情況下,它是無關緊要的。您最好安裝像APC這樣的PHP加速器,或是在資料庫列中新增這些缺少的索引,或盡量避免主頁上的1000個資料庫要求。

print vs echo,哪一個比較快?

假設你真的想知道這個問題的答案。與其嘗試編寫一個腳本並執行上百萬次以找到最快的速度,我不如向您展示一些有趣的工具,您可能會發現這些工具有時非常有用,因為它們允許您更好地理解所編寫的PHP程式碼。

輸入VLD,即「Vulcan邏輯反組譯器」。 VLD是由Derrick Rethans編寫的,您可以在VLD主頁上看到,它「與Zend引擎掛鉤,並轉儲腳本的所有操作碼(執行單元)」。

安裝VLD非常簡單。下載最新版本,並像安裝其他PHP擴充功能一樣安裝它:

$ phpize
$ ./configure
$ sudo make install

在php中啟用擴充功能。 ini檔:

extension=vld.so

是時候看看引擎蓋下面了。建立兩個簡單的文件,一個使用echo,另一個使用print:

// print.php

使用-d vld從命令列執行這些腳本。 activate=1參數啟動VLD輸出,讓我們來看看這些腳本產生的操作碼:

$ php -d vld.active=1 print.php

-

number of ops:  4
compiled vars:  none
line     #  op                           fetch          ext  return  operands
-------------------------------------------------------------------------------
   1     0  PRINT                                            ~0      'foo'
         1  FREE                                                     ~0
   2     2  RETURN                                                   1
         3* ZEND_HANDLE_EXCEPTION

-

$ php -d vld.active=1 echo.php

-

number of ops:  3
compiled vars:  none
line     #  op                           fetch          ext  return  operands
-------------------------------------------------------------------------------
   1     0  ECHO                                                     'foo'
   2     1  RETURN                                                   1
         2* ZEND_HANDLE_EXCEPTION

發現差異了嗎?是的,print也使用了一個操作碼,因為它實際上返回了一些東西。我們可以得出這樣的結論:echo比print快。但是一個操作碼不需要任何成本,即使一個腳本有數百個呼叫要列印。

因為print總是回傳1,所以您可以做以下有趣的事情,這在echo中是不可能的:

[php]

想知道運行包含很多內容的腳本時執行的操作碼的數量嗎?試試這個:

$ php -d vld.active=1 print.php 2> output
$ grep "number of ops" output | cut -f 5 -d ' ' | (tr '\n' +; echo 0) | bc

我嘗試了一個新的Wordpress安裝。腳本在我的筆記型電腦上以一個「總線錯誤」結束之前暫停,但是操作碼的數量已經超過了230萬。

以上是print vs echo,哪一個比較快?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn