目前在一個非常大的項目中,我不打算重新使用另一個站點,我將站點名稱硬編碼到各處的文件中。現在,如果我曾經改變網站名稱,那麼需要花費很多努力來改變這個地方。我知道明顯的解決方案就是將名稱存儲爲變量或常量,但我想你可以稱之爲我的微觀優化思維方式:我總是認爲這將是PHP必須解析的一件事。我意識到它不會有太大的區別,但我只是想知道使用像APC這樣的操作碼緩存是否意味着PHP甚至不需要重新解析它呢?PHP操作碼緩存的基礎知識
回答
真的:你不應該關心這樣的事情。
在配置將任何差異意味着多更差(例如,apc.stat
選項,APC,可以對你的服務器的負載相當的影響 - 而像DB查詢事情你將有數百個時間的影響更大)
這裏,大概是什麼重要的是可維護性:
- 它讓你任何好處(除了從納米優化)有網站名稱不是硬編碼的?
- 它有什麼好處,讓它硬編碼(同樣的例外)?
如果兩種情況下的答案都是「否」,並且您的應用程序可以正常工作......那麼這就是關鍵所在!
如果你有時間的那種小於微的優化來消費,它可能會被更好地用於執行應用程序代碼會與一個分析器,通過你的數據庫查詢去,你正在做的HTTP請求的數量獲取靜態JS/CSS /圖像,升級PHP或修改您的代碼,以便它可以在PHP 5.3上運行(因爲PHP 5.3帶有一些優化超過5.2),...
所有這些將很可能給你一個較高的增益;-)的評論後
編輯:
基本上,當一個PHP文件加載:
- 的從磁盤讀取文件
- 將其解析並編譯爲操作碼
- 個操作碼被執行
隨着操作碼緩存:
- 如果在包含操作碼RAM的地方,那些從RAM(加載是,沒有一個文件的閱覽,也不解析/編譯)
- 如果不是,請參閱之前的步驟 - 只需添加一個「存儲操作碼到RAM」執行前,爲下一個請求
- 和O pcodes執行
的apc.stat
選項定義APC是否應該檢查文件的最後修改日期/時間使用的操作碼從RAM之間作出選擇,或重新編譯的文件,如果它是更近的操作代碼內存。
禁用該選項意味着:
- 文件不檢查在磁盤=>更快,並且使用更少的資源
- 例如,我已經看到CPU負荷的下降,10之間和15%,相當負載的服務器
- 但由於沒有檢查進行修改,如果要考慮到修改禁用此選項時,你必須清除緩存
不過,我說的是真的:有可能是很多事情可以優化,這將意味着比簡單更重要的收穫「我應該使用硬編碼值」與「我應該使用常量/變量」。
這是笏到底會發生..沒有進入令牌層次的細節...
PHP是一種腳本語言,大多數人採取意味着它不會被編譯。雖然傳統意義上的這種情況是正確的,因爲我們沒有調用gcc或javac;相反,每次請求腳本時我們都在編譯。事實上,PHP和Java編譯生命週期非常相似,因爲它們都編譯到中間指令集(操作碼或字節碼),然後在虛擬機(Zend VM或JVM)中運行。
的解析和編譯階段是緩慢的。當我們添加一個opcache時,我們通過存儲解析和編譯階段的結果來短路這個過程,只留下執行動態的一如既往的動態。實際上,我們現在更接近Java的生命週期;主要區別在於我們保存到共享內存而不是文件,並且可以在腳本發生更改時自動重新編譯。
使用操作碼緩存。它可以爲您提供比任何微型優化都可能提升的性能。此外,使用Zend OpCache時,會爲您完成許多優化(例如,當不使用返回值時,將$ i ++切換爲++ $ i)。
使用操作碼緩存不應該是可選的,它將使您能夠通過很少的努力獲得更多的硬件性能。
- 1. EL空操作員 - 基礎知識?
- 2. Ruby基礎知識
- 3. Makefile基礎知識
- 4. MPI基礎知識
- 5. SceneKit基礎知識
- 6. Appengine基礎知識
- 7. AOP基礎知識
- 8. Sitecore基礎知識
- 9. Feedburner基礎知識
- 10. jstree基礎知識
- 11. Angulartics2基礎知識
- 12. C++基礎知識
- 13. sqlite基礎知識
- 14. Threading基礎知識
- 15. 基礎SQL知識?
- 16. innerHTML基礎知識
- 17. Modernizr基礎知識
- 18. CS基礎知識
- 19. Swift基礎知識「!」 &「?」
- 20. REST的基礎知識與PHP
- 21. JQuery基礎知識 - 選擇緩存元素中的元素
- 22. 網絡和操作系統基礎知識的好書
- 23. CakePHP:Containable的基礎知識
- 24. Matlab的類基礎知識
- 25. backbone.js的基礎知識
- 26. 繼承的基礎知識
- 27. Hector&Cassandra的基礎知識
- 28. Ada的T'Class基礎知識
- 29. PHP會話管理 - 基礎知識
- 30. PHP MVC登錄表格基礎知識
謝謝我只是好奇,我應該更多地瞭解操作碼緩存的工作原理 – JasonDavis 2009-09-22 20:47:27