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未来如何处理好内存管理与运行效率之间的矛盾将是一件任重而道远的事情。

时间: 2024-09-28 21:23:50

Github欢乐多 PHP神级代码引发吐槽热的相关文章

实在忍不住了,发一段神级代码,大家瞻仰瞻仰

跟这样的函数比起来,顿觉日月无光,天昏地暗,飞沙走石! 完全一派末日景象啊! 另外命名什么的就先无视吧……跟这么强大的封装比起来,命名算个屁啊! ----说下背景吧-------------- 上述代码是我强调了多次,MVC必须要用Model,然后要注意封装,结果这姐姐(工作2年多了都)就封装成这个德行了 -------------------- 同样一个函数,既能返回一个对象,还能返回这个对象中的某个属性啊服了工作这么多年第一次见这样的神级代码 .到处new,new你妹啊new! ------

sublime text - 神级代码编辑器

Sublime Text 是一个轻量.简洁.高效.跨平台的编辑器. Sublime Text 的特色功能: 良好的扩展功能,官方称之为安装包(Package). 右边没有滚动条,取而代之的是代码缩略图,这个功能非常赞 强大的快捷命令“可以实时搜索到相应的命令.选项.snippet 和 syntex, 按下回车就可以直接执行,减少了查找的麻烦.” 即时的文件切换. 随心所欲的跳转到任意文件的任意位置. 多重选择(Multi-Selection)功能允许在页面中同时存在多个光标. 支持 VIM 模式

VIM自动补全插件 - YouCompleteMe--"大神级vim补全插件"

VIM自动补全插件 - YouCompleteMe 序言 vim 之所以被称为编辑器之神多半归功于其丰富的可DIY的灵活插件功能,( 例如vim下的这款神级般的代码补全插件YouCompleteMe), 使用VIM的用户也多半感觉 IDE开发工具不够轻便,且IDE往往只支持特定的几种语言或者特定系统平台,多数人用来用去,还是觉得VIM最顺手,用起来最舒心. 下面这个VIM的自动补全插件——YouCompleteMe,为我们弥补了vim不能自动补全的缺憾.YCM不仅仅对C族语言的支持非常好,而且它

程序员神级跳槽攻略:什么时候该跳?做什么准备?到哪里找工作?

1.引言 每年的3.4月份都是求职高峰时期,目前已进入6.7月份了,你已经成功换工作了吗? 这次我们想聊的,就是程序员跳槽这件事儿,我打算从三个方面来说: 1)程序员什么时候该跳槽? 2)跳槽前你需要做的准备工作? 3)到哪里找跳槽机会? 学习交流: - 即时通讯开发交流3群:185926912[推荐] - 移动端IM开发入门文章:<新手入门一篇就够:从零开发移动端IM> (本文同步发布于:http://www.52im.net/thread-1755-1-1.html) 2.本文作者 安晓辉

Linux --- git的常用命令以及在github上获取,上传代码

本文是一篇git入门篇的文章,同时是个人的一个学习笔记.涉及的理解程度不会太高,但也会尽量的包含我们日常使用的相关命令. 1:环境说明: 系统:Centos 7 Git version 1.8.3.1 ssh-6.4p1 Gitbub: https://github.com/  时至2015-04-04 2:git操作篇[初始化 git 配置 --- 创建仓库 --- 添加/删除文件 --- 提交更新 --- 查看日志] 2.1:初始化 git 配置 $ git config --global

用了TextMate才知道什么叫神级Editor

用了TextMate才知道什么叫神级Editor 一直用Eclipse作为开发Ruby和Java项目的IDE,但是太耗内存,再开个Firefox和虚拟机就可以直接将MBP弄残了..看到大家都对Mac下的TextMate赞不绝口,于是报着试试的心态装了个中文破解版玩玩(VeryCD上有下载),结果发现功能太TM强大了,简直是神级Editor,除了代码重构这种高级功能不支持外,其他常用功能完全秒杀Eclipse.. 学习起来也很简单,自带的帮助文档扫一遍也就够用了. 常用的快捷键: ??F 全文查找

跟我一起学Vim补全神级插件--YouCompleteMe

最近重拾Vim,编译部署来补全插件YCM,这个插件的补全效果和在写C代码的时候的自动提示错误信息等还是十分棒的,写点心得下来,也算给自己做个备忘. 快速安装: 首先参考我的.vimrc配置,用Vundle安装好之后,进入YCM的文件夹.vim/bundle/YouCompleteMe会找到install.sh脚本文件.这个时候如果你需要C语言系的语义补全你需要在运行install.sh脚本之后手动加入命令--clang-completer,即可进行自动安装,此时YCM会去Clang的官网去下载l

简介GitHub的使用方法--管理个人代码

git是一个分布式版本控制系统,最初由linus torvalds编写,用作Linux内核代码的管理.在推出又被广泛用于开源项目的代码控制,其功能类似我们常用的svn,只不过他的服务是在互联网平台上,我们可以将我们的代码上传至互联网且可随时更新. 作为开源代码库以及版本控制系统,Github拥有140多万开发者用户.随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法. 接下来简单介绍下如何在github平台上建立自己的代码库,并且利用tortoise

在github上参与开源项目贡献代码

1 登录github, 点击自己感兴趣的repository的fork按钮,这样自己的github主页会有一个拷贝. 2 在自己本地修改同时保持和原来的repository同步: git remote -v, 看看自己当前git repository的configure, origin 表示自己的repository 要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行 git remote add [shortname] [url]:git remote add upstream