2009-07-14 30 views
2

調用空PHP函數涉及的「成本」是什麼?主要目的是讓CMS在其生命週期的各個點觸發包含的模塊事件,以處理諸如安全性,訪問權限,後處理,時間安排,http(s)等等。由於可能有十幾個模塊被稱爲幾十次,每個頁面加載時,總的調用次數將達到數百次,甚至可能達到數千次。PHP中空函數的性能

初始模塊基本上都會類似下面的代碼,這將是由物體代替,以處理任何觸發事件被觸發和處理傳遞的數據:最終

function trigger ($trigger_name, $data=false) 
{ 
    return false; 
} 

這會不會是一個問題,應該我反而在一個預先註冊觸發器的模塊系統中工作,以減少無意義函數調用的數量?

回答

2

我在這個環節發現:

http://phplens.com/lens/php-book/optimizing-debugging-php.php

有一個參數和一個空的函數體函數調用需要大約相同的時間做7-8 $ localVar的++操作。一個類似的方法調用當然是大約15 $ localvar ++操作。

更新:2004年7月11日:以上測試是在PHP 4.0.4,大約3年前。我在PHP4.3.3中再次測試了 ,調用一個函數現在需要大約20美元的localvar ++操作,調用一個方法需要大約30美元的localvar ++操作。這可能是因爲$ localvar ++現在運行速度更快,或者功能更慢。

2

我會去的東西更多事件脾氣像this work around對PHP的失蹤事件的支持。它看起來類似於您在預先註冊時所考慮的內容。

如果你不能做到這一點或者不喜歡,一堆空函數調用不會影響性能(雖然成千上萬的嗎?也許)。我會做一些基本的分析,看看花費在頁面上的時間。如果顯示空函數需要大量時間,那麼我會擔心它。

我無法想象在頁面太複雜,需要很多的觸發器,但是,沒有其他更有氣勢瓶頸的情況下。也就是說,如果該頁面已經這麼多的事情上,增加觸發變得更不顯著。