Github歡樂多 PHP神級代碼引發(fā)吐槽熱
前日,github的PHP板塊驚現(xiàn)一段能夠提升70%運(yùn)行效率的代碼,引發(fā)了全世界眾多網(wǎng)友的吐槽和調(diào)侃,“awesome!”、“well done!”、“PHP是世界第一語言!”平時(shí)不茍言笑,埋頭苦干的程序員們充分發(fā)揮了其幽默的一面,github成為了歡樂的海洋。
先來看看這一段神級的代碼:
這段代碼所做的就是一件事情:禁用PHP的垃圾回收器。然后網(wǎng)友測試在使用禁用PHP的垃圾回收器后帶來的效果就是:
Before: Memory usage: 163.66MB (peak: 403.82MB), time: 246.25sAfter: Memory usage: 163.34MB (peak: 350.36MB), time: 99.55s某個(gè)PHP程序運(yùn)行所需時(shí)間從246.25秒降低到99.55秒!
Before: Memory usage: 152.71MB (peak: 335.9MB), time: 195.99sAfter: Memory usage: 164MB (peak: 308.02MB), time: 104.06s某個(gè)PHP程序運(yùn)行所需時(shí)間從195.99秒降低到104.06秒!
……
總的說來,就是禁用垃圾回收器可以提升PHP70%運(yùn)行效率。
既然,PHP的垃圾回收如此不靠譜,那么它以前設(shè)計(jì)的初衷是什么呢?
因?yàn)樵贑/C++中,內(nèi)存管理是一件很麻煩的事情,內(nèi)存的使用和釋放都需要程序員編寫程序手動操作,如果有所遺漏,就可能造成資源浪費(fèi)甚至內(nèi)存泄露。因此PHP在設(shè)計(jì)的時(shí)候?yàn)榱艘?guī)避這個(gè)問題,引入了垃圾回收器來用于自動釋放無用對象的內(nèi)存。
值得一提的是PHP在運(yùn)行循環(huán)回收算法的時(shí)候,會產(chǎn)生額外的時(shí)間消耗。雖然在較小的項(xiàng)目中,這種額外消耗微乎其微,但是當(dāng)運(yùn)行大項(xiàng)目時(shí),由于同時(shí)啟動了多個(gè)循環(huán)回收的線程,這種消耗將會產(chǎn)生很大的影響,最直觀的表現(xiàn)就是程序運(yùn)行時(shí)間變長了。
禁用PHP的垃圾回收,是提高程序運(yùn)行效率的最簡單粗暴的方式。這就如同腿腳受傷了,最簡單的方式就是截肢一樣。
當(dāng)該神級代碼一公布,github的程序員們便樂開了花:
首先到來的homm表達(dá)了對這種處理方式的驚訝以及不明白為什么要這么做,并客觀評價(jià)了這個(gè)處理方式看起來并不好:
接著到來的smileytechguy便開始調(diào)侃了:“恩,沒有注釋,讓我們把PHP的內(nèi)核禁用了吧,我們也不會解釋為什么這樣做的?!?/p>
然后就開始一發(fā)不可收拾了:
有打醬油的:
有吐槽和調(diào)侃的:
光是說PHP是世界第一語言的就有幾個(gè)國家的版本,話說只用幾段代碼就能提高70%效率,PHP世界第一語言當(dāng)之無愧:
還有賣萌的:
PHP的垃圾回收機(jī)制成為大家的笑料,我們也很清楚簡單的禁用PHP垃圾回收并不能解決內(nèi)存溢出等問題,PHP未來如何處理好內(nèi)存管理與運(yùn)行效率之間的矛盾將是一件任重而道遠(yuǎn)的事情。
via:evget
相關(guān)文章:
1. php使用正則驗(yàn)證密碼字段的復(fù)雜強(qiáng)度原理詳細(xì)講解 原創(chuàng)2. 基于javaweb+jsp實(shí)現(xiàn)企業(yè)車輛管理系統(tǒng)3. HTML5實(shí)戰(zhàn)與剖析之觸摸事件(touchstart、touchmove和touchend)4. ASP將數(shù)字轉(zhuǎn)中文數(shù)字(大寫金額)的函數(shù)5. Jsp servlet驗(yàn)證碼工具類分享6. jscript與vbscript 操作XML元素屬性的代碼7. 基于PHP做個(gè)圖片防盜鏈8. Jsp+Servlet實(shí)現(xiàn)文件上傳下載 文件列表展示(二)9. asp.net core 認(rèn)證和授權(quán)實(shí)例詳解10. XML在語音合成中的應(yīng)用
