这是我一直想知道的:为什么PHP比Java或C#慢,如果所有这三种语言都被编译成字节码然后从那里执行?我知道通常PHP会根据每个请求重新编译每个文件,但即使你将APC(字节码缓存)带入图片中,性能也远不及Java或C#(尽管APC大大改进了它).
编辑:我甚至没有在网络层面谈论这些语言.我在谈论他们数字运算时的比较.甚至不包括启动时间或类似的东西.
另外,我不是根据这里的回复做出某种决定.PHP是我的首选语言; 我只是对它的设计感到好奇.
其中一个原因是PHP中缺少JIT编译器,正如其他人所提到的那样.
另一个重要原因是PHP的动态类型.动态类型语言总是比静态类型语言慢,因为在运行时而不是编译时检查变量类型.因此,像C#和Java这样的静态类型语言在运行时会明显更快,尽管它们通常必须提前编译.JIT编译器使动态类型语言不再是一个问题,但唉,PHP没有一个内置的(虽然参见Facebook的HHVM作为PHP的第三方JIT的例子).
我猜你在这里比较了苹果和橘子 - 假设你使用所有这些语言来创建Web应用程序,它还有更多的东西,而不仅仅是语言.(很多时候,数据库正在减慢你的速度;-)
我永远不会建议在速度参数的基础上选择其中一种语言.
Java和C#都有JIT编译器,它们接受字节码并编译成真正的机器代码.编译它的行为可能需要一些时间,因此C#和Java可能会受到较慢的启动时间的影响,但是一旦代码被JIT编译,其性能就像任何"真正编译"的语言(如C++)一样.