当前位置:  开发笔记 > 编程语言 > 正文

是什么让PHP比Java或C#慢?

如何解决《是什么让PHP比Java或C#慢?》经验,为你挑选了3个好方法。

这是我一直想知道的:为什么PHP比Java或C#慢,如果所有这三种语言都被编译成字节码然后从那里执行?我知道通常PHP会根据每个请求重新编译每个文件,但即使你将APC(字节码缓存)带入图片中,性能也远不及Java或C#(尽管APC大大改进了它).

编辑:我甚至没有在网络层面谈论这些语言.我在谈论他们数字运算时的比较.甚至不包括启动时间或类似的东西.

另外,我不是根据这里的回复做出某种决定.PHP是我的首选语言; 我只是对它的设计感到好奇.



1> Sasha Chedyg..:

其中一个原因是PHP中缺少JIT编译器,正如其他人所提到的那样.

另一个重要原因是PHP的动态类型.动态类型语言总是比静态类型语言慢,因为在运行时而不是编译时检查变量类型.因此,像C#和Java这样的静态类型语言在运行时会明显更快,尽管它们通常必须提前编译.JIT编译器使动态类型语言不再是一个问题,但唉,PHP没有一个内置的(虽然参见Facebook的HHVM作为PHP的第三方JIT的例子).


PHP字节码缓存有很多帮助,因为它们实际上是缓存源 - >字节码转换,但是没有来自字节码 - >机器代码的缓存或优化转换.它只是在更基本的层面解释.

2> Simon Groene..:

我猜你在这里比较了苹果和橘子 - 假设你使用所有这些语言来创建Web应用程序,它还有更多的东西,而不仅仅是语言.(很多时候,数据库正在减慢你的速度;-)

我永远不会建议在速度参数的基础上选择其中一种语言.


+1速度大部分时间都是关于代码的编写程度,而不是关于在愚蠢的基准测试中测量的速度的相对差异.优秀的开发人员可以使任何这些平台飞行.
我不是在选择一种语言.PHP是我的首选语言(至少对于网络而言).我只是好奇.

3> RichieHindle..:

Java和C#都有JIT编译器,它们接受字节码并编译成真正的机器代码.编译它的行为可能需要一些时间,因此C#和Java可能会受到较慢的启动时间的影响,但是一旦代码被JIT编译,其性能就像任何"真正编译"的语言(如C++)一样.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有