缩小PHP有什么意义吗?

缩小PHP有什么意义吗?,php,minify,Php,Minify,我知道你可以缩小PHP,但我想知道是否有任何意义。PHP是一种解释语言,因此运行速度比编译语言稍慢。我的问题是:如果我缩小我的PHP,客户端会看到页面加载速度的明显提高吗 还有,有没有一种方法可以编译PHP或类似的东西?PHP被编译成字节码,然后在类似于VM的东西上进行解释。许多其他脚本语言遵循相同的一般过程,包括Perl和Ruby。它不是一种传统的解释语言,比如说BASIC 如果试图“缩小”震源,则不会有效提高速度。你可以通过使用一个 脸谱网引入了一个将PHP源转换为C++代码的编译器。Ras

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


还有,有没有一种方法可以编译PHP或类似的东西?

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

如果试图“缩小”震源,则不会有效提高速度。你可以通过使用一个

脸谱网引入了一个将PHP源转换为C++代码的编译器。Rasmus Lerdorf,一个PHP大佬做了一个关于HipHop性能改进的报告。简而言之,它并不比优化代码和使用字节码缓存快多少。HipHop对于大多数用户来说都是杀伤力过大

Facebook最近还推出了一款基于他们制作HipHop的新虚拟机。这仍然是一个相当新的版本,目前还不清楚它是否能为公众带来重大的性能提升


为了确保声明明确,请阅读全文。它指出了使用诸如和之类的工具对代码进行基准测试和评测以及识别瓶颈的多种方法,也来自Facebook。

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

或者像

这样的东西,通过一些重写(较短的变量名),您可以节省一些字节的内存,但这也没有什么意义


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

有PHP编译器。。。请参阅以获取列表;但是(除非你有Facebook那么大,或者你的应用程序是面向客户端运行的),它们通常会带来很多麻烦


简单的操作码缓存将为您带来更多的好处。或者分析代码,找出瓶颈,然后对其进行优化。

这与其说是一个答案,不如说是一个广告。我一直在开发一个PHP扩展,该扩展将Zend操作码转换为在具有静态类型的VM上运行。它不会加速任意PHP代码。它确实允许您编写比普通PHP允许的运行速度更快的代码。这里的关键是静态键入。在现代CPU上,动态语言会从左到右接受分支预测失误惩罚。PHP数组是哈希表这一事实也带来了高昂的成本:大量的分支预测失误、缓存的低效使用、糟糕的内存预取以及任何SIMD优化。分支预测失误和缓存未命中尤其是当今处理器的致命弱点。我的小VM通过使用静态类型和C数组而不是哈希表来回避这些问题。结果是运行速度快了大约十倍。这是使用字节码解释。扩展可以选择通过gcc编译函数。在这种情况下,你可以获得2到5倍的速度

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


同样,该扩展不是通用的PHP加速器。您必须为它编写特定的代码。

您不需要缩小PHP。 为了获得更好的性能,安装操作码缓存;但理想的解决方案是将您的PHP升级到5.5或更高版本,因为较新版本默认有一个名为Zend Optimizer的操作码缓存,它的性能比其他版本更好。

是的,有一点(非技术性)

你的主人可以在他的服务器上监视你的代码。如果你缩小和丑化它,间谍更难窃取你的想法

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

重点是使文件更小,因为较小的文件比较大的文件加载更快。此外,删除空白将使解析速度加快一点,因为这些字符不需要解析出来


它会引人注目吗?几乎永远不会,除非文件很大且大小有很大差异。

从这一点上看,您指的不是操作码缓存。memcached是一种提高性能的完美方法。。。在执行基准测试和评测并确定缓存本身将是最好的性能增益后。如果您使用的是PHP 5.5,则无需安装任何操作码缓存,因为它现在默认附带。我实际上查找了cromulent:(.我同意其他人的看法,在这种情况下使用memcached是有误导性的。在编译过程中缓存数据与生成的操作代码不同。请注意,如果没有外部(!)的话,整个字节码/虚拟机实际上并不能为您买来任何东西字节码缓存。我不明白为什么PHP总是在默认情况下扔掉字节码…我想这是一个共享托管问题。APC默认包含在PHP中,从旧的基于6.0的主干开始。我不确定我们是否会在5.4中默认看到它,或者不管新的主干最终被调用了什么…非常感谢您提供的信息。不幸的是,我没有看到它我的服务器的eep控制(租用)。web主机是否可能使用APC?大多数共享主机提供商不使用APC。您应该查看虚拟专用服务器,以便控制配置。VPS通常比普通共享主机更昂贵,但比真正的专用服务器便宜得多。流行的VPS提供商包括Slicehost和Linode。别忘了您应该首先对代码进行基准测试和分析!使代码更紧凑有什么好处吗?这样做会花费更少的时间吗