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.25safter: memory usage: 163.34mb (peak: 350.36mb), time: 99.55s
网友martindines评论:
before: memory usage: 152.71mb (peak: 335.9mb), time: 195.99safter: memory usage: 164mb (peak: 308.02mb), time: 104.06s
网友extreme评论:
before: memory usage: 217.37mb (peak: 631.42mb), time: 313.4safter: memory usage: 174.62mb (peak: 495.42mb), time: 152.3safter latest commit: memory usage: 174.88mb (peak: 495.1mb), time: 67.73s
网友j0k3r评论:
memory usage: 385.05mb (peak: 910.03mb), time: 138.81smemory usage: 384.93mb (peak: 863.22mb), time: 26.12s
网友youbs评论:
before:memory usage: 2194.78mb (peak: 3077.39mb), time: 1324.69safter:memory usage: 4542.54mb (peak: 4856.12mb), time: 232.66s
网友johnpbloch评论:
before: memory usage: 43.34mb (peak: 69.12mb), time: 26.57safter: 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.32safter: memory usage: 257.05mb (peak: 608.25mb), time: 24.34s
网友raphaelstolt评论:
memory usage: 94.01mb (peak: 163.47mb), time: 11.24smemory usage: 87.91mb (peak: 123.66mb), time: 3.38s
网友malaney评论:
before:memory usage: 207.13mb (peak: 705.58mb), time: 762.59safter:memory usage: 164.42mb (peak: 469.22mb), time: 53.98s
哦,太多了….
你是不是也乐了,这些搞技术的人是多么有趣一群人呀,生活中虽然有些寡言少语,但在工作中,在技术问题上,他们幽默、好学、欢闹的性格才真正的体现出来。
原文地址:php垃圾收集器和程序员的幽默, 感谢原作者分享。
