[精讚] [會員登入]
1971

PHP程式經驗 #1 -- 靜態的物件比動態物件快

驗證 1. 使用動態物件函式 > 使用靜態物件函式。 2. 使用有宣告的靜態物件函式 > 使用動態無宣告的靜

分享此文連結 //n.sfs.tw/11453

分享連結 PHP程式經驗 #1 -- 靜態的物件比動態物件快@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-10-22 16:33:19 最後編修
2017-07-18 08:14:08 By 張○○
 

自動目錄

驗證

1. 比較使用動態物件函式和使用靜態物件函式的執行速度差異。

2. 同樣使用靜態方法,比較有先宣告static方法的差異。

測試程式

class bench {
  public function a() { return 1; }
  public static function b() { return 1; }
}
// 動態宣告物件
$s = microtime(1);
$obj = new bench();
for ($i = 0; $i < 100000; $i++) $obj->a();
$e = microtime(1);
echo "Dynamic Method: ".($e - $s)."\n";   //

// 使用靜態方法使用未宣告為static的方法
$s = microtime(1);
for ($i = 0; $i < 100000; $i++) bench::a();
$e = microtime(1);
echo "Dynamic Static Method: ".($e - $s)."\n";

// 使用靜態方法使用static方法
$s = microtime(1);
for ($i = 0; $i < 100000; $i++) bench::b();
$e = microtime(1);
echo "Declared Static Method: ".($e - $s)."\n";

結果

Dynamic Method: 0.048645973205566   (最快)
Dynamic Static Method: 0.17413401603699 (最慢)
Declared Static Method: 0.056394100189209

結論

1. 除非必要不要用靜態方式

無論是不是有直接宣告靜態方法,使用靜態方法的執行時間都比動態方法來得久,尤其是直接用靜態方法使用無static修飾元的方法,所耗費的時間是動態方法的3倍多。

2. 使用靜態方式務必宣告

若要使用靜態方法,在函數前請加上static修飾元,這樣程式在編譯時會保留記憶體給他。

參考資料

[1] High Performance PHP  -- Ilia Alshanetsky


原文2010-06-03 23:13:42

END

你可能感興趣的文章

[PHP] 字串拆解函數substr 奇異的錯誤(札記) 偶然發現一個 substr函數拆解上的怪異之處

PHP判斷對方瀏覽器語系 多語系的網頁應該主動偵查瀏覽器的語系,配合使用者跳出合適的語系。

[CodeIgniter3] CI3 Session 失敗的問題 這次把我的程式放到Centos8,結果sesssion 一直沒作用,真的不知道發生了什麼事?

[PHP7] 利用Memcached 儲存 Session Memcached+ PHP7,利用Memcached 儲存 Session。

[PHP] 隨機產生一個顏色字串 讓PHP 隨機產生一個顏色字串

[PHP]解決ksort新增的SORT_NATURAL|SORT_FLAG_CASE方法 php>=5.4中ksort函數多了SORT_NATURAL 和 SORT_FLAG_CASE 旗標,對舊版的PHP中要怎麼辦?

隨機好文

安裝SPHINX支援中文 新版本的 sphinx 和舊版不同,網路上很多範例和教學是不能用的。此文是安裝和設定方法分享

[札記] 2016.7~12月札記 札記,只是札記

APACHE的記錄檔格式 LogFormat 語法 在APACHE中有定義一些記錄的語法模版 在 /etc/httpd/conf/httpd.conf 中: LogForm

[CodeIgniter 3] 資料庫的使用方法整理1/2 --Select的使用 [CodeIgniter 3] 資料庫的使用方法整理:Select的使用

[AS3] 變數型態 基本類型宣告 as3 有下列幾種基本類型:string, int, number, object, boolean, n