問題描述
我剛剛看了一下 wordpress 程式碼,發現了 add_action 的這個定義:
function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
return add_filter($tag, $function_to_add, $priority, $accepted_args);
}
現在為什麼我們浪費一個 CPU 週期來呼叫另一個函式,我們可以簡單地做自己,然後我們不必為同一個事情記住兩個不同的函式名。
最佳解決方案
行動做事情過濾器修改事物。您在操作中執行操作,而如果應用過濾器,則不會發生任何事件或操作,除了要過濾的值的更改。例如傳送電子郵件或將資料庫值儲存在過濾器中是不正確的,但在操作中可以使用。當您需要違反此慣例時,可能會有罕見的時刻,但這是一個有用和必要的規則。
透過用過濾器替換所有 add_action 和 do_action 呼叫,您可以刪除這些區別,並強制將諸如’the_content’ 等的操作或過濾器的知識等同於世界各地的操作或過濾器,並鼓勵錯誤。
所以不是讓你的程式碼更難閱讀,而是意識到,如果你的程式碼很慢,那並不是因為你沒有在這裡和那裡刮鬍子,要麼是緩慢的伺服器,要麼是程式碼的演演算法結構,正在處理的資料的性質。您將獲得更多的重構過程,升級硬體或更改您的範例。
從 WordPress 執行的角度來說,PHP 執行數百萬條指令。交換過濾器的操作幾乎不會陷入百分位數的千分之一。
http://fabien.potencier.org/article/8/print-vs-echo-which-one-is-faster
I have tried on a fresh WordPress installation. The script halts before it ends with a “Bus Error” on my laptop, but the number of opcodes was already at more than 2.3 millions. Enough said.
如果你真的想嘗試一下,看看這個人如何使用 VLD,併為自己測試你的理論。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。