찾다
php教程php手册PHP垃圾收集器和程序员的幽默

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

Jun 06, 2016 pm 08:14 PM
composerphp쓰레기기분프로그램 제작자

Composer是一个深受程序员喜欢的PHP依赖关系管理工具。最近它的源代码上的一处改动引起了大家热烈的讨论。改动其实只是增加了一行代码: gc_disable(); ,但为什么要增加这行代码的原因却让人很费解。 估计普通的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

哦,太多了….

你是不是也乐了,这些搞技术的人是多么有趣一群人呀,生活中虽然有些寡言少语,但在工作中,在技术问题上,他们幽默、好学、欢闹的性格才真正的体现出来。

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경