PHP是基于C语言的为什么性能不如使用字节码和虚拟机的java?

2023-06-30 奥古斯宏

首先,性能跟性能也不一样。一个spring跑起来之后,占掉了700M内存,一个PHP-FPM运行起来后,才几十M内存,你说哪个性能好?如果说JAVA的性能更好,为什么只能跑这点项目?

由于原理不同,一台4G内存的机器,PHP-FPM创建几十个站,是没有问题的,但是JAVA只能创建几个。

我说这个不是狡辩,只是想说明,他们不一样,并不是表达“PHP-FPM更好”,其实能运行更多的网站不代表能“服务”更多的网站,只是说首先他们的是不一样的,浮于表面的解释没有意思。从这个角度看,java算不算性能好呢?

当然,你说的可能是并发、请求数等方面的性能。对于请求上,PHP-FPM确实要差。为什么说他差呢?明明PHP-FPM本身是C实现的。这里说他差,不是说他“执行差”,而是处理请求的模型差。由于每次接到请求,都需要创建PHP进程,初始化PHP代码,都要“浪费”服务器资源。

多进程虽然能承载更多的请求数,但是要注意,CPU核心数不会增加。由于本身没有“异步”,尤其是遇到“阻塞事件”,会消耗大量的CPU去切换进程,检查进程状态,所以“性能差”。

但实际上PHP-FPM也并不差,有几个语言,能够实现稳定的进程控制和服务,以及实时的代码加载?PHP-FPM就跟云厂商推出的ServerLess服务一样,更新了代码,就能执行。所以PHP-FPM本身是水平很高的产物。但是考虑到前面说的原因,用它来服务网站时,会有局限性。

但是从执行方面上讲,其实PHP并不算差,由于PHP是纯C实现的,大多数的函数功能也由C实现,所以其实执行起来并没有很差劲。在TechEmpower测压网站上,PHP也有一定的成绩。

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

也因为PHP执行比较快,所以PHP也涌现了很多高性能框架,国内的有workerman、swoole等,国外的有ReactPHP等。他们都是抛弃了PHP-FPM的模式,只使用几个进程去处理成千上万的连接。因为前面解释了,太多的进程反而可能导致并发性能下降。而且更多的进程不代表“同时处理的任务”更多,CPU核心数摆在那里,能“同时执行” 的就这点资源。

我介绍了这么多关于PHP的性能问题,不是试图说“PHP很好”,(虽然我认为确实不差)。是想说理解性能,单纯从“实现方式”上讲,显得“思维受限”。

最近浏览
IP用户:123.158.*.*
2 天前 Chrome Mac 10.6
IP用户:54.36.*.*
3 天前 aHrefs Bot
IP用户:39.173.*.*
7 天前 Generic Bot
IP用户:117.132.*.*
8 天前 Chrome Windows 10
IP用户:39.148.*.*
8 天前 Go-http-client
IP用户:116.179.*.*
8 天前 Baidu Spider
IP用户:120.1.*.*
10 天前 Chrome Windows 10
IP用户:39.173.*.*
10 天前 Generic Bot
IP用户:54.36.*.*
11 天前 aHrefs Bot
IP用户:34.64.*.*
12 天前 Googlebot
IP用户:74.125.*.*
12 天前 Googlebot
IP用户:120.227.*.*
14 天前 Go-http-client
累计浏览次数:756
评论
点击登录
phpreturn,PHP武器库,专注PHP领域的项目和资讯,收录和介绍PHP相关项目。
最近浏览 点击登录
累计浏览次数:106052
一周浏览次数:3144
今日浏览次数:693

本站所有权利归 phpreturn.com 所有

举报/反馈/投稿邮箱:phpreturn@ulthon.com

鲁ICP备19027671号-2