是否有必要缩小PHP?

时间:2010-11-02 16:38:37

标签: php minify

我知道你可以缩小PHP,但我想知道是否有任何意义。 PHP是一种解释型语言,因此运行速度比编译语言慢一点。我的问题是:如果我要缩小我的PHP,客户会看到页面加载速度明显提高吗?

另外,有没有办法编译PHP或类似的东西?

8 个答案:

答案 0 :(得分:154)

PHP被编译成字节码,然后在类似VM的东西之上进行解释。许多其他脚本语言遵循相同的一般过程,包括Perl和Ruby。它不是真正的传统解释语言,比如BASIC。

如果您试图“缩小”来源,则不会有效提速。使用bytecode cache like APC即可获得显着增长。

Facebook推出了一个名为HipHop的编译器,它将PHP源代码转换为C ++代码。 Rasmus Lerdorf,其中一位大PHP人员做了presentation for Digg earlier this year,涵盖了HipHop给出的性能改进。简而言之,它并不比优化代码和使用字节码缓存快得多。 HipHop对大多数用户来说太过分了。

Facebook最近还推出了基于他们制作HipHop的新虚拟机HHVM。它仍然相当新,目前尚不清楚它是否会为公众提供重大的性能提升。

为了确保明确说明,请完整阅读that presentation。它指出了使用xdebugxhprof等工具对Facebook进行基准测试和分析以及识别瓶颈的众多方法。

答案 1 :(得分:13)

放弃缩小PHP的想法,转而使用操作码缓存,例如PHP AcceleratorAPC

或其他类似memcached

的内容

答案 2 :(得分:3)

通过一些重写(较短的变量名称),您可以节省几个字节的内存,但这也很少有意义。

但是我确实设计了一些应用程序,允许将脚本连接在一起。使用php -w可以显着压缩它,为脚本启动添加一点速度增益。但是,在启用操作码的服务器上,这只会保存一些文件mtime检查。

答案 3 :(得分:3)

这不是广告的答案。我一直在研究PHP扩展,它将Zend操作码转换为在静态类型的VM上运行。它不会加速任意PHP代码。它允许您编写比常规PHP允许的运行速度更快的代码。这里的关键是静态类型。在现代CPU上,动态语言会左右分支错误预测。 PHP数组是哈希表的事实也带来了高成本:许多分支错误预测,缓存的低效使用,内存预取不良以及无论如何都没有SIMD优化。分支错误预测和缓存未命中特别是当今处理器的致命弱点。我的小VM通过使用静态类型和C数组而不是哈希表来回避这些问题。结果最终运行速度快了十倍。这是使用字节码解释。扩展可以选择通过gcc编译函数。在这种情况下,你的速度会提高两到五倍。

以下是感兴趣的人的链接:

https://github.com/chung-leong/qb/wiki

同样,扩展不是一般的PHP加速器。你必须编写特定的代码。

答案 4 :(得分:1)

有PHP编译器......有关列表,请参阅this previous question;但是(除非你是Facebook的大小或者目标是你的应用程序运行客户端),他们通常比他们的价值更麻烦

简单的操作码缓存将为您所涉及的工作带来更多好处。或者对代码进行分析以识别瓶颈,然后对其进行优化。

答案 5 :(得分:1)

您不需要缩小PHP。 为了获得更好的性能,请安装Opcode缓存;但理想的解决方案是将PHP升级到5.5或更高版本,因为较新版本的默认操作码为Zend Optimiser,其性能优于其他http://massivescale.blogspot.com/2013/06/php-55-zend-optimiser-opcache-vs-xcache.html

答案 6 :(得分:1)

“要点”是使文件更小,因为小文件比大文件加载得更快。此外,删除空格将使解析速度稍微快一点,因为不需要解析这些字符。

会很明显吗?几乎从不,除非文件很大并且大小差异很大。

答案 7 :(得分:0)

是的,有一个(非技术)要点。

您的托管服务商可以在您的服务器上监视您的代码。如果您将其缩小并丑化,则间谍很难窃取您的想法。

缩小和丑化php的一个原因可能是间谍保护。我认为丑陋的代码应该在自动部署中迈出一步。

相关问题