跳到主要內容

PHP 7.1.5 require() vs include() vs spl_autoload() vs require_once() vs include_once() benchmark

做了數次的測試, include 相對穩定與快速一些.  很多時候 require 與 include 不相上下

spl_autoload 則令人失望, 速度非常不穩定而且比require(), include() 慢.  如果要使用spl_autoload, 建議在裡面搭配 require() / include() 比較好.

spl_autoload 的唯一好處就是自動載入需要的檔案, 不需要再在include/require, 避免在不同的class / php 裡因為需要而要重新include/require, 從而減少浪費與增加載入速度.  不過, 若是在相同的條件下, include / require 全部一樣的檔案, spl_autoload 則失去優勢了.  如以下的測試.

另外, 有開啟opcache 確實會比較快, 建議還是打開的好, 畢竟opcache 是將之前compile好的php 放在memory, 下一次再用時就不需要再compile, 從而達到快速載入的時間


With opcache enabled

(Require 1 files) Execution Time: 0.012760877609253 seconds.
(Require 3 files) Execution Time: 0.0004780292511 seconds.
(Require 5 files) Execution Time: 0.00022292137145996 seconds.
(Require 50000 files) Execution Time: 7.2010669708252 seconds.
(Require 50000 files) Execution Time: 1.4862420558929 seconds.
(Require 100000 files) Execution Time: 8.5520980358124 seconds.
(Require 100000 files) Execution Time: 2.9480040073395 seconds.


(Include 1 files) Execution Time: 7.6055526733398E-5 seconds.
(Include 3 files) Execution Time: 0.0004727840424 seconds.
(Include 5 files) Execution Time: 0.00020599365234375 seconds.
(Include 50000 files) Execution Time: 4.1629090309143 seconds.
(Include 50000 files) Execution Time: 1.4502310752869 seconds.
(Include 100000 files) Execution Time: 2.8844561576843 seconds.
(Include 100000 files) Execution Time: 2.9632999897003 seconds.


(SPL include 1 files) Execution Time: 0.0052289962768555 seconds.
(SPL include 1 files) Execution Time: 0.00010299682617188 seconds.
(SPL include 3 files) Execution Time: 0.0004839897156 seconds.
(SPL include 5 files) Execution Time: 0.00023603439331055 seconds.
(SPL include 50000 files) Execution Time: 1.6529231071472 seconds.
(SPL include 100000 files) Execution Time: 3.4276151657104 seconds.
(SPL include 100000 files) Execution Time: 3.4228408336639 seconds.


(Require_once 1 files) Execution Time: 8.6784362792969E-5 seconds.
(Require_once 1 files) Execution Time: 0.0003709793091 seconds.
(Require_once 3 files) Execution Time: 0.0005021095276 seconds.
(Require_once 5 files) Execution Time: 0.00021886825561523 seconds.
(Require_once 100000 files) Execution Time: 3.4374978542328 seconds.
(Require_once 100000 files) Execution Time: 3.2777290344238 seconds.

(Include_once 1 files) Execution Time: 8.6069107055664E-5 seconds.
(Include_once 1 files) Execution Time: 0.0004200935364 seconds.
(Include_once 3 files) Execution Time: 0.0004892349243 seconds.
(Include_once 5 files) Execution Time: 0.00022196769714355 seconds.
(Include_once 100000 files) Execution Time: 3.2072939872742 seconds.
(Include_once 100000 files) Execution Time: 3.2406730651855 seconds.

(SPL include_once 1 files) Execution Time: 0.00010108947753906 seconds.
(SPL include_once 1 files) Execution Time: 0.0004088878632 seconds.
(SPL include_once 1 files) Execution Time: 0.0004150867462 seconds.
(SPL include_once 3 files) Execution Time: 0.0380859375 seconds.
(SPL include_once 3 files) Execution Time: 0.0004920959473 seconds.
(SPL include_once 3 files) Execution Time: 0.0003490447998 seconds.
(SPL include_once 3 files) Execution Time: 0.0005309581757 seconds.
(SPL include_once 5 files) Execution Time: 0.00025415420532227 seconds.
(SPL include_once 100000 files) Execution Time: 3.6968638896942 seconds.
(SPL include_once 100000 files) Execution Time: 3.7117121219635 seconds.


(SPL include 5 files) Execution Time: 0.00028705596923828 seconds.
(SPL include 5 files) Execution Time: 0.00027894973754883 seconds.

(SPL require 5 files) Execution Time: 0.00023508071899414 seconds.
(SPL require 5 files) Execution Time: 0.00028395652770996 seconds.

(SPL require_once 5 files) Execution Time: 0.00025296211242676 seconds.
(SPL require_once 5 files) Execution Time: 0.00032997131347656 seconds.


(SPL include 5 times same) Execution Time: 0.0002610683441 seconds.
(SPL include 5 times same) Execution Time: 0.0004680156708 seconds.

(SPL include once 5 times same) Execution Time: 0.0004050731659 seconds.
(SPL include once 5 times same) Execution Time: 0.0004439353943 seconds.

(SPL require 5 times same) Execution Time: 0.0002567768097 seconds.
(SPL require 5 times same) Execution Time: 0.0004460811615 seconds.

(SPL require once 5 times same) Execution Time: 0.0004019737244 seconds.
(SPL require once 5 times same) Execution Time: 0.0003800392151 seconds.


=====================================================

Opcache disabled



(Require_once 3 files) Execution Time: 0.0004332065582 seconds.
(Include_once 3 files) Execution Time: 0.0004758834839 seconds.
(SPL include_once 3 files) Execution Time: 0.0004470348358 seconds.



(Require 3 files) Execution Time: 0.0004479885101 seconds.
(Include 3 files) Execution Time: 0.0004470348358 seconds.
(SPL include 3 files) Execution Time: 0.0003831386566 seconds.




(Require_once 100000 files) Execution Time: 11.942540168762 seconds.
(Require_once 100000 files) Execution Time: 2.7962639331818 seconds.
(Require_once 100000 files) Execution Time: 2.8087410926819 seconds.

(Include_once 100000 files) Execution Time: 2.855250120163 seconds.
(Include_once 100000 files) Execution Time: 2.8582229614258 seconds.
(Include_once 100000 files) Execution Time: 2.8096168041229 seconds.

(SPL include_once 100000 files) Execution Time: 3.3121628761292 seconds.
(SPL include_once 100000 files) Execution Time: 3.270397901535 seconds.
(SPL include_once 100000 files) Execution Time: 3.2455520629883 seconds.



(Require 100000 files) Execution Time: 2.5736191272736 seconds.
(Include 100000 files) Execution Time: 2.5720911026001 seconds.
(SPL include 100000 files) Execution Time: 3.0897269248962 seconds.

留言

這個網誌中的熱門文章

解決Apache 2.2, 關於HTTPS 之下使用PROXY 面對的 proxy server received an invalid response from an upstream server 以及 proxy: pass request body failed 的問題

修改以下 (proxy 以及 從proxy 接收的server): httpd.conf: ----------- 在 Include conf.d/*.conf 的前面加入以下: LimitRequestBody 2147483647  #2Gb Timeout 24000 ProxyTimeout 24000 ProxyBadHeader Ignore ssl.conf ---------- 在各個virtualhost 裡加入以下:     SSLEngine on     SSLProxyEngine on     SSLProxyVerify none     SSLProxyCheckPeerCN off     #SSLProxyCheckPeerName off     SSLProxyProtocol +SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2 以下這個只在proxy server 裡的virtualhost 設定     ProxyPass / https://REMOTE_HOST:443/ retry=1 acquire=3000 timeout=3600 Keepalive=On 

解決CentOS 8 的 failed to set locale defaulting to c.utf-8 的問題

這原因是沒有安裝好支援的語言與字型, 特別是UTF8 並沒有被安裝到 因此使用以下指令確認 localedef -i en_US -f UTF-8 en_US.UTF-8 假如出現 "[error] character map file `UTF-8' not found: No such file or directory" 或者 [error] default character map file 'ANSI_X3.4-1968' not found : No such file or directory 那就安裝UTF8 吧 yum whatprovides "*/UTF-8.gz" 如果找到的話 "UTF-8.gz" 的話 yum install "*/UTF-8.gz" -y 再執行一次: localedef -i en_US -f UTF-8 en_US.UTF-8