PHP垃圾收集器和程序員的幽默

jopen 9年前發布 | 26K 次閱讀 PHP

Composer是一個深受程序員喜歡的PHP依賴關系管理工具。最近它的源代碼上的一處改動引起了大家熱烈的討論。改動其實只是增加了一行代碼:gc_disable();,但為什么要增加這行代碼的原因卻讓人很費解。

估計普通的PHP程序員對這行代碼并不知道是干嘛的。但單從語義的字面意思上可以猜出,它是要禁止PHP的垃圾收集器。沒錯,就是這個意思。

給那些想尋求技術解釋的人說明一下,在Composer里,PHP的垃圾收集器浪費了大量的CUP資源,它試圖收集由于 Composer在解決程序依賴問題時候產生的成千上萬的對象(這些對象是Composer用來表達依賴包內部規則的)。對象在不斷的生產,它就一遍又一 遍的收集,但事實上它什么都沒收集到,但每次對象的生產都會觸發它再次收集。

禁止PHP的垃圾收集器雖然阻止了PHP的高級功能,但卻釋放了大量的內存,這樣,Composer有足夠的內存來做自己的事情,而不是讓它們浪費在什么垃圾都收集不到的活動中。經過這樣的修改后,很多人都報告內存使用量大幅度下降。

為什么這個問題這么久了才被人發現?看起來原因是性能優化工具無法檢測到垃圾收集器的工作。很顯然,這是性能優化工具的問題,期望以后后有所改進。 但大多數情況下,這PHP的這個特征并不會成為一個問題,我不建議你們都在自己的項目中禁止垃圾收集器的工作。 在大多數情況下,PHP的垃圾收集器是非常有用的,只是在我們的Composer工具里它出現了問題。

上面的這段話是這段代碼的修改人Seldaek在Hacker News上給大家的解釋

說的很清楚明白,消除了大家的疑惑,但這不是本文的重點,本文要說的重點是大家對這一重大修改的反應,全部體現在了Github的評論里。太歡樂了。你會發現程序員是最幽默的,下面選幾個例子:

網友clemherreman評論:

Before: Memory usage: 163.66MB (peak: 403.82MB), time: 246.25s
After: Memory usage: 163.34MB (peak: 350.36MB), time: 99.55s

網友martindines評論:

Before: Memory usage: 152.71MB (peak: 335.9MB), time: 195.99s
After: Memory usage: 164MB (peak: 308.02MB), time: 104.06s

網友eXtreme評論:

Before: Memory usage: 217.37MB (peak: 631.42MB), time: 313.4s
After: Memory usage: 174.62MB (peak: 495.42MB), time: 152.3s
After latest commit: Memory usage: 174.88MB (peak: 495.1MB), time: 67.73s

網友j0k3r評論:

Memory usage: 385.05MB (peak: 910.03MB), time: 138.81s
Memory usage: 384.93MB (peak: 863.22MB), time: 26.12s

網友youbs評論:

Before:
Memory usage: 2194.78MB (peak: 3077.39MB), time: 1324.69s

After:
Memory usage: 4542.54MB (peak: 4856.12MB), time: 232.66s

網友johnpbloch評論:

Before: Memory usage: 43.34MB (peak: 69.12MB), time: 26.57s
After: Memory usage: 43.67MB (peak: 60.27MB), time: 7.01s

網友o評論:

Our builds are now faster than ever!

網友oscherler評論:

Before: Memory usage: 272.95MB (peak: 898.45MB), time: 144.32s
After:  Memory usage: 257.05MB (peak: 608.25MB), time: 24.34s

網友raphaelstolt評論:

Memory usage: 94.01MB (peak: 163.47MB), time: 11.24s
Memory usage: 87.91MB (peak: 123.66MB), time: 3.38s

網友malaney評論:

Before:
Memory usage: 207.13MB (peak: 705.58MB), time: 762.59s

After:
Memory usage: 164.42MB (peak: 469.22MB), time: 53.98s

哦,太多了….

你是不是也樂了,這些搞技術的人是多么有趣一群人呀,生活中雖然有些寡言少語,但在工作中,在技術問題上,他們幽默、好學、歡鬧的性格才真正的體現出來。

來自:http://www.techug.com/php-gc

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!