[精讚] [會員登入]
2138

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] 位元運算 (Bitwise operation)及和PERL比較 PHP 的位元運算,及和PERL比較整理

[PHP] CodeIgniter 3+pure+smarty安裝及環境設置1/2 PHP framework CodeIgniter 3+ pure CSS +smarty Template Engine的整合

[PHP] 檢查檔案是否是圖檔 使用getimagesize函數檢查檔案是否是圖檔

[phpmyadmin] 錯誤:您應升級到 MySQL 5.5.0 或更新版本 使用phpmyadmin4出現錯誤:您應升級到 MySQL 5.5.0 或更新版本的解決方式

[PHP] 類別中要怎麼使用callback function 召回函數(回呼函數)? 在類別中使用標準函數,若其中的callback 函數也是在類別中,該怎麼使用?

[PHP] 檢查IP是否在某個網段內 mtachcidr 要檢查IP是否在某個網段內,要寫幾行?10行?5行? 不用,只要2行。以下是我寫的 code /** * matchCI

隨機好文

[jQuery] textarea 的取值和給值 HTML 的 TEXTAREA 標籤若要用 jquery 取值,不能使用 .text() 或 .html() ,使用 .

[CodeIgniter3] 解決無法上傳特定檔案(.sb2)的問題 上傳時出現The filetype you are attempting to upload is not allowed,要怎麼解決?

[JAVA] JWS, JWT, JWE, JOSE是什麼? [JAVA] JWS, JWT, JWE, JOSE是什麼?非常的複雜,儘量來搞清楚..

[AS3] 我做的唯一一個Flash As3遊戲UFO INVADSION [AS3] 我做的唯一一個Flash As3遊戲,是第一個也是最後一個,後來就沒再寫as3,不過as3還滿好玩的。

[AS3] FLASH 引入外部as檔 FLASH AS3中,若要引用另外撰寫的 class(*.as) 檔案,該如何處理?