Github欢乐多 PHP神级代码引发吐槽热
前日,github的PHP板块惊现一段能够提升70%运行效率的代码,引发了全世界众多网友的吐槽和调侃,“awesome!”、“well done!”、“PHP是世界第一语言!”平时不苟言笑,埋头苦干的程序员们充分发挥了其幽默的一面,github成为了欢乐的海洋。
先来看看这一段神级的代码:
这段代码所做的就是一件事情:禁用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未来如何处理好内存管理与运行效率之间的矛盾将是一件任重而道远的事情。
Github欢乐多 PHP神级代码引发吐槽热的更多相关文章
- 前端神器-神级代码编辑软件Sublime Text下载、使用教程、插件推荐说明、全套快捷键
Sublime Text 是一个代码编辑器,也是HTML和散文先进的文本编辑器.Sublime Text是由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能 ...
- 安利一个github上面的一个神级库thefuck,Linux命令敲错了,没关系,自动纠正你的命令
没错就是这么神奇,名字相当噶性,thefuck.当你命令输入错误不要怕,直接来一句fuck,自动纠正你输入的命令. 在你输入错误的命令的时候,忍俊不禁的想来一句fuck,没错你不仅可以嘴上说,命令里面 ...
- 《程序员代码面试指南》第三章 二叉树问题 遍历二叉树的神级方法 morris
题目 遍历二叉树的神级方法 morris java代码 package com.lizhouwei.chapter3; /** * @Description:遍历二叉树的神级方法 morris * @ ...
- VIM自动补全插件 - YouCompleteMe--"大神级vim补全插件"
VIM自动补全插件 - YouCompleteMe 序言 vim 之所以被称为编辑器之神多半归功于其丰富的可DIY的灵活插件功能,( 例如vim下的这款神级般的代码补全插件YouCompleteMe) ...
- IntelliJ IDEA 15款 神级超级牛逼插件推荐(超赞,谁用谁知道)
满满的都是干货 所有插件都是在 ctrl+alt+s 里的plugins 里进行搜索安装 1.CodeGlance 代码迷你缩放图插件 2. Codota 代码提示工具,扫描你的代码后,根据你的敲击 ...
- 用了TextMate才知道什么叫神级Editor
用了TextMate才知道什么叫神级Editor 一直用Eclipse作为开发Ruby和Java项目的IDE,但是太耗内存,再开个Firefox和虚拟机就可以直接将MBP弄残了..看到大家都对Mac下 ...
- 如何使用 Laravel Collections 类编写神级代码
本文首发于 如何使用 Laravel Collections 类编写神级代码,转载请注明出处. Laravel 提供了一些超赞的组件,在我看来,它是目前所有 Web 框架中提供组件支持最好的一个.它不 ...
- [WCF]缺少一行代码引发的血案
这是今天作项目支持的发现的一个关于WCF的问题,虽然最终我只是添加了一行代码就解决了这个问题,但是整个纠错过程是痛苦的,甚至最终发现这个问题都具有偶然性.具体来说,这是一个关于如何自动为服务接口(契约 ...
- TODO:Github的使用技巧之同步代码
TODO:Github的使用技巧之同步代码 GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub. GitHub 于 2008 年 ...
随机推荐
- ASP.NET——拒绝访问。 (异常来自HRESULT:0x80070005 (E_ACCESSDENIED))
运行ASP.NET网站的时候出现下面这个问题,这个问题如图: 这个问题的解决方法为: 运行dcomcnfg 点 组件服务->服务->电脑->我的电脑->DCOM 配置 找到&q ...
- String对象中常用的方法
String对象中常用的方法 1.charCodeAt方法返回一个整数,代表指定位置字符的Unicode编码.strObj.charCodeAt(index)说明:index将被处理字符的从零开始 ...
- windows环境下MySQL重启的命令行说明
ctrl+r 弹出运行框,输入cmd,然后再控制太输入命令: 1.点击“开始”->“运行”(快捷键Win+R). 2.停止:输入 net stop mysql 3.启动:输入 net start ...
- XCODE真机调试设备连接一直忙碌如何处理
只是还没反应过来 等一会就行了
- JS实现刷新iframe的方法
<iframe src="1.htm" name="ifrmname" id="ifrmid"></iframe> ...
- WebClient
Mircsoft在dotnet1.1框架下提供的向 URI 标识的资源发送数据和从 URI 标识的资源接收数据的公共方法.通过这个类,大家可以在脱离浏览器的基础上模拟浏览器对互联网上的资源的访问和发送 ...
- Makedown常用符号整理
整理自:http://www.jianshu.com/p/1e402922ee32 不过这里发现博客园的makedown语法支持还不完善,代码语法显示挺有问题的,比较遗憾. 标题 # 一级标题## 二 ...
- HTTP - 内容编码
HTTP 应用程序有时在发送之前需要对内容进行编码.例如,在把很大的 HTML 文档发送给通过慢速连接上来的客户端之前,服务器可能就会对它进行压缩,这样有助于减少传输实体的时间. 内容编码过程 内容编 ...
- Problem 1016 咒文卷轴 优先队列+前缀和+rmq
题目链接: 题目 Problem 1016 咒文卷轴 Time Limit: 3000 mSec Memory Limit : 131072 KB 问题描述 小Y 是一个魔法师,有一天他获得了一卷神秘 ...
- maven工程的如何进行代码调试
1.maven项目的父项目右键选择:maven build 注意: 1.选择Browser workspace,让BaseDirectory变成:${***}形式. 2. ...