从源代码编译vs.预编译的Windows二进制文件


Compiling From Source vs. Pre-compiled Windows Binaries

所以在过去我总是使用预编译的Windows PHP二进制文件,但后来这个指南引起了我的注意。

这让我想到了这个:

  • 为什么有人想从源代码编译PHP时,二进制文件是可用的?
  • 是否有我应该知道的绩效奖金?
  • 如果是,这个量是否足够大,我应该注意?

作为参考,我使用PHP主要用于CLI应用程序,主要用于批量数据处理和一些网站信息收集。
我的系统配置:Windows 7 x64, 6gb内存,Intel Q6600 (2.4gHz x 4)。

我认为在Windows上编译PHP而不是使用二进制构建有三个很好的理由:

  • 您需要一个可编译的扩展名或编译时选项,该选项不是可用二进制文件的标准配置

  • 如果你的内存不够,需要一个精简的PHP可执行文件,没有扩展,请不要使用

  • 你想要一个专门为你的处理器/环境编译的二进制文件,以获得可能实现的小性能提升(如果你有一个不寻常的设置)

如果您相信二进制文件的提供者没有做什么坏事,那么我不认为性能与您可以编译的任何东西有什么显著不同,除非您的编译器明显优于标准。


正如Dagon所指出的,真正偏执狂(或曾经被咬过)的系统管理员宁愿从源代码编译。

为什么有人要编译PHP从源代码中获取二进制文件对他们有用吗?

我想其中一个原因是启用需要的特定扩展—可能是静态编译它们,而不是使用外部.dll文件

(主要是在Linux上)的另一个原因是使用最新版本的PHP——通常不是发行版提供的版本。


有绩效奖金吗?我应该知道吗?

我认为,如果您的服务器上有一些特定的体系结构,那么由通用编译生成的二进制文件可能比专门为它生成的二进制文件效率要低——前提是您使用了正确的配置选项和开关来编译。

同样,如果你编译(只)你需要的扩展作为嵌入到结果二进制文件中,这是两个你不需要动态加载的文件。


是否足够重要我应该注意吗?

考虑到你没有运行一些每秒数百个请求的重载网站…我不确定自己编译会有那么有趣…

特别是考虑到在Windows上编译PHP比在Linux上更难…