新闻详细
新闻当前位置:新闻详细

PHP7卓越性能背后的原理有哪些,PHP为什么说是最好的编程语言

专业编程培训机构——完成蜕变以后轻松拿高薪

电话+V: 152079-09430 ,欢迎咨询PHP7卓越性能背后的原理有哪些,PHP为什么说是最好的编程语言AC683B5F-A752-4f15-8813-25504B002449,[python实用课程],[C++单片机原理],[C#网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]

一、PHP7卓越性能背后的原理有哪些

一zval使用栈内存

在Zend引擎和扩展中,经常要创建一个PHP的变量,底层就是一个zval指针。之前的版本都是通过MAKE_STD_ZVAL动态的从堆上分配一个zval内存。而PHP7可以直接使用栈内存。PHP代码中创建的变量也进行了优化,PHP7直接在栈内存上预分配zval。这样节约了大量内存分配和内存管理的操作。

PHP5

zval*val;MAKE_STD_ZVAL(val);

PHP7

zvalval;

二zend_string存储hash值,array查询不再需要重复计算hash

PHP7为字符串单独创建了新类型叫做zend_string,除了char*指针和长度之外,增加了一个hash字段,用于保存字符串的hash值。PHP中array是核心数据结构,PHP程序中往往都有大量的$array[$key]操作,虽然hashtable查找的时间复杂度是O(1),但$key要转为hash值是要经过计算的。不仅仅是array操作,实际上PHP底层对于类属性、类方法、函数,访问时都要先通过hashtable查找到对应的指针,再执行对应的操作。PHP7之前Zend引擎会有大量的CPU时间用于计算hash值。

实际上PHP程序运行起来之后,大部分情况下$key的值都是不变的。PHP7干脆将这个hash值保存起来,下次直接使用,这样就节省了大量的hash计算操作,PHP的hashtable与C数组的性能一致。

三hashtable桶内直接存数据

PHP5的hashtable每个元素都是一个Bucket*,而PHP7直接存Bucket,减少了内存申请次数,提升了Cache命中率和内存访问速度。

四zend_parse_parameters改为宏实现

PHP的C扩展函数与PHP中的变量进行参数输入时,要使用zend_parse_parameters()函数,这个函数根据一个字符串参数找到对应PHP的zval指针,然后进行赋值。这个函数实际上有一定的性能消耗。PHP7直接使用宏替换了zend_parse_parameters函数,C扩展中不再需要使用zend_parse_parameters进行逐个参数的查找,宏展开后自动会实现参数赋值。仅此一项就提升了5%的性能。

五新增加4种OPCODE

很多PHP程序中会大量使用call_user_function,is_int/string/array,strlen,defined函数。PHP5都是以扩展函数的方式提供,PHP7中这4类函数改成ZendVM的OPCODE指令,执行更快。

六其他更多优化

二、为什么在知乎php被黑的最惨烈?

PHP的开发者社区风格非常稳健,从php4到php5,再到PHP7,乃至难产的php6版本,php这一路发展下来,语言本身在稳步的前进,同时对向下兼容处理很好。所以整个社区可以一脉相承的发展。

PHP6最然最终没有发布,但其核心的功能也都陆续迁移到了php5.x版本中。

最新刚刚发布的PHP7版本,那也是让人惊艳。我自己实际部署的效果,整个系统只做了一行代码的改动,就无缝迁移到了PHP7版本,系统负载直接降到了小数。这就是生产力。

我相信PHP7的普及会很快,因为确实会给厂商带来巨大的实惠:性能提升,可以减少机器,减少人力,系统稳定性也更好,也可以带来更多的收入。

三、PHP为什么说是最好的编程语言

尝试百度”PHP是最好的语言”,发现指向较多的是那个关于程序员的笑话。但是如果这个梗来自于这个笑话的话,那么为什么在笑话里这个程序员不说C++/python/haskell或者别的什么语言是最好的而要说PHP是最好的呢?所以感觉似乎最早的出处不在于此。有人知道吗?

来看看知乎网友们是怎么看待这场语言之争的吧!

网友回答

网友A

「为什么在笑话里这个程序员不说C++/Python/Haskell或者别的什么语言是最好的而要说PHP是最好的呢?」——因为说任何其他语言「最好」都并不好笑啊。

任何掌握超过两种以上非PHP编程语言且具有一定常识的程序员都会本能地意识到PHP的问题所在,曾经有一篇汇总性的文章在此:PHP:afractalofbaddesign/fuzzynotepad(译文版可见:五大受损,全面解析PHP的糟糕设计,但翻译得很烂),历陈PHP破败之处,激荡深远。如果你没时间去读那篇长文,那我告诉你一个简单的例子来说明PHP有多匪夷所思:PHP的核心函数命名很不一致,有「strptime」这样类C函数的名字,有「nl2br」这样的简写,却也有「htmlspecialchars」这样的长名。后来人们发现这种不一致并非偶然,而是当PHP还是只有不到一百个函数的小语言的时候,其作者决定用函数名的字符数量——来作为函数的hash(!)。由于这个愚不可及的决定,PHP的函数名长度要尽可能地长短有秩、均匀分布,影响一直延续至今。甚至有好事者将上述文中:

Youpulloutthehammer,buttoyourdismay,ithastheclawpartonbothsides.这一句严肃对待,做了一把PHP锤子:

试想你走进五金从业者公会的啤酒馆,看到墙上挂着从钉子到电动螺丝刀的各式工具当作陈列品,而你在端详一阵之后指着其中的这样一把锤子,说「啊,这是最好的工具」,你觉得酒馆里的人会是什么反应呢?

网友B

因为php和最好的语言几乎没有关系。。一般用来讽刺一些没见过世面,把自己归属于某一种编程语言的语言教徒。

事实上每一门语言都有其设计的灵魂,有它的取舍。很难说什么是最好的。比起做个脑残粉总是鼓吹自己擅长的语言,不如多学几门语言,开阔视野。

我们都喜欢分享自己的价值观。希望被认可,希望有更多同伴。其实这也是在给身边的人洗脑,这很正常。但有时候自己在某一领域的付出会成为枷锁。

网友C

Windows是最好的操作系统!

以上为纯吐槽。

我看楼上还有很多还在讨论PHP不是最好的语言,还好我不是程序员,只是稍微懂一点代码,我认为之所以说这个梗,是因为PHP最普及和最流行,大多数不管懂不懂程序都知道或听说过,所以才能引起共鸣。这就是我上面那句吐槽的含义。

如果上面那句吐槽改为:Ubuntu是最好的操作系统!(围观群众:What?)

网友D

难道不是这么来的?某女:你能让这个论坛的人都吵起来,我今晚就跟你走.

某软件工程师:PHP是最好的语言!

某论坛炸锅了,各种吵架…

某女:服了你了,我们走吧你想干啥都行.

某软件工程师:今天不行,我一定要说服他们,PHP必须是最好的语言

某女:…….

网友E

编程语言之争由来已久,

但是php和java确实是最受争议的。

自从web2.0热起来后,java逐渐淡出了。

究其原因并不在于语言本身,

而在于用语言的人。

因为php确实简单,门槛最低,

所以很多并不适合编程的人涌了进来,仅仅为了糊口罢了。

这些人的各种无敌言论自然让很多专业的人呲之以鼻。

天龙八部里有个星宿派,

虽然在施毒方面有些特长,但门下弟子总的来说武艺平平,

其实江湖武功低微的人多的是,低调便是了,谁又老是盯着你呢?

然而这个新宿派却偏偏跑出去招摇过市,胡吹本门派武功盖世,大有傲视天下之势,

那么其他门派的人会怎么看他们呢?

php就是语言江湖的星宿派。

网友F

对我来说PHP就是最好的语言。它不是炫耀技巧、扯蛋概念的东西。完成任务才是程序员要做的事。没什么语言可以高效开发同时高效运行。

相关利益:写PHP17年。

网友G

作为一个十多年老phper,看到这句话,也会笑。虽然我也会cc++javago,并都做有相应产品。世界上一半以上的网站是php,bat,fb,处处有它。但这些大公司在近些年,都在试图改造它。淘宝去php改java,百度重写扩展,fb搞xhp等等。但结局是搞了这么些,这几大公司却收效甚微。比之前的性能提升不了太多。在我理解看来,无非是想提高一下b格而已。

在php的初始阶段,php是连框架也没有的。直到今天,php创始人lerdorf仍然反对mvc,因为他觉得影响了性能。在那个年代,同样的一个应用,做java的待遇比php高一倍。因为php简单。如果跟你说一个人花了一个星期用php写了个论坛,跑得也还蛮好,你一点也不要惊讶,后来这个论坛还卖给了阿里。面向过程的php,成就了无数小的站点。

后来是一个框架辈出的阶段,phper们终于也有了跟java一样的mvc,待遇也慢慢接近于java了。大家明白了一件事,大项目,得有点高深的学术内涵才能忽悠的住。opp也更加规范了,你能找到的设计模式,php全都有,于是phper放言:你还敢说php不高级,不入流?而实际上,设计模式,真正能用到的就那么一两个。对于解析性语言,我只能,呵呵。

归结一下,php,我觉得更像屌丝逆袭。然后,笑的人有两种,一种是屌丝的自嘲,另一种是高富帅的妒忌。

网友H

先说一下php的优点:

跟py相比,它不需要django之类的库,原生就支持web。小白们不需要配置什么东西,门槛就低了。而且php的语法是类C的,函数命名大部分也是类C的,大部分码农在学校或多或少都学过C/C++,接触php肯定要比py顺手。

跟java相比,支持php的主机显然更多。云主机兴起之前,是个虚拟主机都是lamp,都支持php。而虚拟主机是最便宜的解决方案,也就是说随便租个虚拟主机就能跑php的网站,成本就低了。

我个人认为没有什么最好的语言,只有最合适的语言。php之所以在web2.0的时代异军突起,击败了py,原因跟php坑不坑没有关系,跟契机有关系,跟他在那个环境下合不合适有关系。把php的流行归功于什么最好的语言简直是胡扯,也是没动脑子。

网友H

大部分敢于说自己是最好的语言的语言,至少有一部分人是真这么认为的。

比如说C语言最好的,最差最差也有一部分C语言核心开发者有信心这么说。

但是PHP语言是一个连开发者都不敢『声称是最好的语言』的语言。

这是不言自明的公设,不需要证明。

小圈子有个笑话。

会不会用PHP是有一个明确判断标准的:

只有觉得PHP是个烂语言,才有资格说「我会PHP」。

如果你连PHP有多烂都感觉不出来,请别说「我会PHP」「我会编程」。

网友J

因为php算不上一种语言。就好像说“射钉器是世界上最好的武器”一样。

【FUTURE PROGRAMMING COURSE】尊享对接老板

电话+V: 152079-09430

机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。

PHP7卓越性能背后的原理有哪些,PHP为什么说是最好的编程语言AC683B5F-A752-4f15-8813-25504B002449
Copyright2025未知推广科技