代码之家  ›  专栏  ›  技术社区  ›  Bojangles Vincent Baillet

缩小PHP有意义吗?

  •  92
  • Bojangles Vincent Baillet  · 技术社区  · 15 年前

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

    另外,有没有编译PHP或类似的方法?

    7 回复  |  直到 13 年前
        1
  •  159
  •   Charles    12 年前

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

    如果您试图“缩小”源,则不会有效提高速度。使用 bytecode cache like APC

    Facebook推出了一个名为 HipHop 它将PHP源转换为C++代码。Rasmus Lerdorf,一个大的PHP家伙 presentation for Digg earlier this year

    Facebook最近也发布了 HHVM ,一种基于他们制作嘻哈音乐的新虚拟机。这仍然是相当新的,尚不清楚它是否会给公众带来重大的业绩提升。

    为了确保清楚地说明,请阅读 that presentation xdebug xhprof ,也来自Facebook。

        2
  •  15
  •   Stephen    15 年前

    PHP Accelerator ,或 APC

    或者其他类似的东西 memcached

        3
  •  3
  •   mario    15 年前

    通过一些重写(较短的变量名),您可以节省一些字节的内存,但这也非常重要。

    php -w 它可以被显著压缩,为脚本启动增加一点速度增益。但是,在启用了操作码的服务器上,这只会保存一些文件mtime检查。

        4
  •  3
  •   cleong    12 年前

    这与其说是一个回答,不如说是一个广告。我正在开发一个PHP扩展,它将Zend操作码转换为在具有静态类型的VM上运行。它不会加速任意PHP代码。它确实允许您编写比常规PHP允许的运行速度更快的代码。这里的关键是静态输入。在现代CPU上,动态语言会左右地吃掉分支预测失误的惩罚。PHP数组是散列表这一事实也带来了高昂的成本:大量的分支预测失误、缓存使用效率低下、内存预取不良以及没有SIMD优化。分支预测失误和缓存未命中是当今处理器的致命弱点。我的小虚拟机通过使用静态类型和C数组而不是哈希表来回避这些问题。结果运行速度提高了大约10倍。这是使用字节码解释。扩展可以选择通过gcc编译函数。那样的话,你的速度会提高两到五倍。

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

    同样,扩展不是一个普通的PHP加速器。你必须为它编写特定的代码。

        5
  •  1
  •   Community CDub    8 年前

    有PHP编译器。。。看见 this previous question

    简单的操作码缓存将为您带来更多的好处。或者分析代码以确定瓶颈,然后优化它。

        7
  •  1
  •   Dieter Porth    6 年前

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

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

    推荐文章