先來看看這一段神級的程式碼:
這段程式碼所做的就是一件事情:禁用PHP的垃圾回收器。然後網友測試在使用禁用PHP的垃圾回收器後帶來的效果就是:
Before: Memory usage: 163.66MB (peak: 403.82MB), time: 246.25s
After: Memory usage: 163.34MB (peak: 350.36MB), time: 99.55s
某個PHP程式執行所需時間從246.25秒降低到99.55秒!
Before: Memory usage: 152.71MB (peak: 335.9MB), time: 195.99s
After: Memory usage: 164MB (peak: 308.02MB), time: 104.06s
某個PHP程式執行所需時間從195.99秒降低到104.06秒!
……
總的說來,就是禁用垃圾回收器可以提升PHP70%執行效率。
既然,PHP的垃圾回收如此不靠譜,那麼它以前設計的初衷是什麼呢?
因為在C/C++中,記憶體管理是一件很麻煩的事情,記憶體的使用和釋放都需要程式設計師編寫程式手動操作,如果有所遺漏,就可能造成資源浪費甚至記憶體洩露。因此PHP在設計的時候為了規避這個問題,引入了垃圾回收器來用於自動釋放無用物件的記憶體。
值得一提的是PHP在執行迴圈回收演算法的時候,會產生額外的時間消耗。雖然在較小的專案中,這種額外消耗微乎其微,但是當執行大專案時,由於同時啟動了多個迴圈回收的執行緒,這種消耗將會產生很大的影響,最直觀的表現就是程式執行時間變長了。
禁用PHP的垃圾回收,是提高程式執行效率的最簡單粗暴的方式。這就如同腿腳受傷了,最簡單的方式就是截肢一樣。
當該神級程式碼一公佈,github的程式設計師們便樂開了花:
首先到來的homm表達了對這種處理方式的驚訝以及不明白為什麼要這麼做,並客觀評價了這個處理方式看起來並不好:
接著到來的smileytechguy便開始調侃了:“恩,沒有註釋,讓我們把PHP的核心禁用了吧,我們也不會解釋為什麼這樣做的。”
然後就開始一發不可收拾了:
有打醬油的:
有吐槽和調侃的:
光是說PHP是世界第一語言的就有幾個國家的版本,話說只用幾段程式碼就能提高70%效率,PHP世界第一語言當之無愧:
還有賣萌的:
PHP的垃圾回收機制成為大家的笑料,我們也很清楚簡單的禁用PHP垃圾回收並不能解決記憶體溢位等問題,PHP未來如何處理好記憶體管理與執行效率之間的矛盾將是一件任重而道遠的事情。
評論(1)