PHP應用程序可以有太多的功能嗎?大量PHP函數的執行是否會佔用內存和資源?我的WordPress主題在開發中有很多功能(當我完成時可能有100多個功能),我擔心我可能會有太多功能。在PHP應用程序中可能有太多的函數嗎?
回答
我不會關心100個函數。這是非常少的功能。
全局函數和方法被編譯,存儲在內存中,並在散列表中進行索引(保存用於最近實現的緩存查找)。因爲訪問哈希表的時間平均不變,所以在函數數量增長時調用函數時性能不會降低。
但是,會有更多的開銷解析腳本,並且如果實際調用所有這些函數,請編譯它們。如果你使用操作碼緩存,這不是一個真正的問題。還會有更多的內存開銷,但通常情況下,內存在企業級Web服務器中並不是問題,因爲儘可能快地嘗試提供請求,而不必關心內存。
也有風格問題。如果您的全局功能太多,請考慮是否:
- 您正在複製這些函數之間的代碼。考慮重構,將通用代碼移至其他函數,並在適當的情況下通過添加參數來推廣函數的行爲。
- 你會更好的分組功能,對類中的相同數據進行操作。
最後,只有在您對應用程序進行配置並查找函數調用成爲CPU瓶頸和函數定義成爲內存瓶頸時才擔心。
即使許多功能導致更多的內存消耗,我建議您仍然使用它們。一個明確的結構是多比性能更重要。
性能可以提高throwing hardware at it,糟糕的結構應用程序變得很難維護。
順便說一句:100個功能是沒有!
不,它不能。實際上,有很多功能是很好的,因爲這意味着你已經將代碼分成了更易管理的部分。一個很好的規則是保持你的功能小,讓他們只做一件事。哦,並且記得給你的函數命名,以便函數名稱很好地描述函數的功能。
有很多方法會在執行時產生一個小的開銷,但與從結構化代碼中獲得的好處相比,它是微不足道的,所以我不會擔心它。
100個函數不用擔心。如果你的代碼很慢,你應該將其配置爲明確地找到緩慢的部分。
請記住,過早優化是邪惡的
只是讓你的代碼來做它的工作。不關心你的功能計數。
我認爲是一個項目可以有太多的功能。我不知道你如何設置你的項目,但它聽起來像你有功能庫。您可能會在將來考慮面向對象的開發。這使您可以將功能封裝到對象中。因此,該對象包含這些函數,並且它們對其他對象不可見(除非您希望它們是)。這有助於減少API污染。
對於你內存方面的擔憂 - 我也曾擔心過,請不要。良好的編程實踐對速度更重要。無論如何,你甚至都不會注意到Web服務器上的差異。永遠支持可維護性而不是速度!
PHP的內核中有over 3000 functions,所以不要擔心增加太多。
- 1. 是否有可能在Python中使用太多的函數?
- 2. (iPhone應用程序)錯誤:太多參數函數'URLWithString:'
- 3. 我有可能在WindowsOS(Win7)中開發iphone應用程序嗎?
- 4. 我的應用程序可能在其主線程上做了太多工作
- 5. Rails應用程序太多參數
- 6. Javascript函數調用php foreach。可能嗎?
- 7. 本來就像電話應用程序中的性能太多了嗎?
- 8. 有太多課程嗎?
- 9. 函數可以在PHP中有多個返回值類型嗎?
- 10. 房地產php應用程序的設計數據庫,表有太多的列
- 11. 應用程序可能在其主線程(Android)上做了太多工作
- 12. Android:應用程序可能在其主線程上做了太多工作
- 13. 是否有可能在構造函數中調用函數? PHP
- 14. Bypass php is_numeric()函數是可能的嗎?
- 15. 是否有可能使用adb shell在android應用程序中運行函數()?
- 16. 在C#程序中可能有多個main()方法嗎?
- 17. Unremove-able iOS應用程序可能嗎?
- 18. 這個Facebook應用程序可能嗎?
- 19. 在應用程序中包含iOS應用程序。這可能嗎?
- 20. iOS 4.3.4中可能有離線HTML5應用程序嗎?
- 21. 在PHP中使用Javascript ajax進行多線程,可能嗎?
- 22. 在應用程序中登錄多少,多少錢太多?
- 23. AJAX或PHP可以「回聲」太多嗎?
- 24. 同時在多個設備上調試應用程序 - 有可能嗎?
- 25. Webview應用程序的寬度太多
- 26. 在Mac上的Java應用程序中播放swf可能嗎?
- 27. 我可以在Spotify應用程序中使用Facebook PHP SDK嗎?
- 28. 我可以在GKE中使用StackDriver Trace PHP應用程序嗎?
- 29. 我可以在Spotify應用程序中使用php SESSIONS嗎?
- 30. 如何在應用程序中的多個位置設置路線。可能嗎?
+1同意完全 – 2010-06-11 05:57:04