GCC PGO 适应性优化 PHP7 编译详细介绍

简介: PGO 即 Profile-guided optimization(归档引导优化),是一种自适应优化手段,不需要对软件代码本身做出改进,即可获得性能的提升,目前已经应用于 GCC、VC++ 等常见的编译器中。一些开源项目像 Firefox 就默认使用 PGO 编译来优化性能,但是大部分软件上应用率并

介绍

PGO 即 Profile-guided optimization(归档引导优化),是一种自适应优化手段,不需要对软件代码本身做出改进,即可获得性能的提升,目前已经应用于 GCC、VC++ 等常见的编译器中。一些开源项目像 Firefox 就默认使用 PGO 编译来优化性能,但是大部分软件上应用率并不高。

使用 GCC PGO 编译 PHP7.0 + opcache,在阿里云 1核心 1G 内存的配置上,Wordpress 4.6.0 性能提升约 5%,Drupal 8.1.8 上则提升约 2%。 当然了,服务器配置越高,自己身参数设置的好,性能提升就会越明显。

所以,下面就来简单介绍一下如何使用 PGO 来编译 PHP7.0。个人绝对 PGO 编译最好还是应用于,PHP 升级的时候,如果在第一次编译服务器环境的时候,网站没有搭建完成,进行训练并不会有明显的性能提升。

安装

首先,按鸟哥说的,GCC 编译器越新越好,最好不要低于 GCC 4.8,虽然貌似 GCC 4 早期的时候就支持 PGO 了,反正听大神的准没错。
二,下载 PHP7.0,然后 ./configure 一下,这里就不再重复了。

三、然后我们开始第一次编译 PHP,

make prof-gen

四、这时候再 php 目录下,sapi/cli/phpsapi/cgi/php-cgisapi/fpm/php-fpm 这个三个二进制文件就会生成,供我们进行针对性的训练

2x7co

五、适应性训练,使用如下命令

sapi/cgi/php-cgi -T 100 /data/www.mf8.biz/index.php >/dev/null

就会自动对 /data/www.mf8.biz/index.php 进行针对性训练,一般来说网站访问量最大的就是首页了,所以我们只要对首页文件进行训练即可。 使用 LNMP 的环境还可以用 sapi/fpm/php-fpm 代替 sapi/cgi/php-cgi,获得更好的反馈。

值得说明的是,训练只能对一个网站程序有效,例如训练的 WordPress 只会对 WP 的性能进行适应性优化。如果服务器有多种网站程序,则可以使用 php_pgo_training_scripts 脚本来获得通用性的 PGO 优化。

六、清理第一次编译生成的二进制文件,输入如下命令

make prof-clean

七、根据训练反馈的想信息,进行第二次编译并进行安装,输入如下命令

make prof-use 
make install

注意,有些一键包,还有编译 PHP 的时候有使用 liconv 库,所以在 make prof-genmake prof-use 都别忘记引用额外的库。

其他

针对 Oneinstack 用户,我对 upgrade_php.sh 做了个小改动。使用 PHP7.0 的朋友,可以直接用这个代替 /include/upgrade_php.sh 文件。然后升级 PHP,就默认有 PGO 优化了。

记得,把里面的 /data/wwwroot/mf8/index.php 替换成自己的程序。

https://gist.github.com/ivmm/f17352d5a310385a1dda1ac553401587

目录
相关文章
|
1月前
|
存储 前端开发 JavaScript
优化PHP代码性能
【8月更文挑战第3天】优化PHP代码性能
40 16
|
19天前
|
安全 Java 云计算
JSF 应用究竟何去何从?云端部署能否成为其全新突破点?快来一探究竟!
【8月更文挑战第31天】本文介绍了将JavaServer Faces(JSF)应用部署到云平台的过程。首先,根据成本、功能、可靠性和安全性选择合适的云平台。接着,展示了构建简单JSF应用的示例代码。最后,以AWS Elastic Beanstalk为例,详细说明了部署流程。部署至云端可提升应用的可用性、扩展性和安全性。
29 0
|
2月前
|
缓存 PHP 数据库
PHP 优化技巧与实践
在现代网络应用开发中,PHP作为一种强大的服务器端脚本语言,其性能优化成为提高应用性能和用户体验的关键。本文将探讨一些高效利用PHP的方法与实践,帮助开发者在编写和优化PHP代码时更加高效和专业。 【7月更文挑战第9天】
|
3月前
|
SQL 缓存 PHP
PHP 与数据库优化:提升Web应用性能的关键
在Web开发中,PHP作为一种流行的服务器端脚本语言,与数据库密切相关。本文探讨了如何通过PHP与数据库优化来提升Web应用的性能和响应速度。从数据库查询优化、索引的设计到PHP代码编写的最佳实践,我们将深入探讨每个方面如何影响应用的效率和用户体验。
|
3月前
|
网络协议 Unix 应用服务中间件
PHP-FPM 性能配置优化
该文介绍了PHP-FPM的性能配置优化,包括其工作原理和与Nginx的配合。FastCGI是一种提高CGI效率的协议,PHP-FPM是它的管理器。文章对比了CGI和FastCGI的区别,指出FastCGI更高效,能处理更多请求。接着讨论了php-fpm的进程数调优,包括ondemand(按需创建)、dynamic(动态创建)和static(固定数量)三种模式,以及各自适用场景和参数配置。
94 0
PHP-FPM 性能配置优化
|
2月前
|
存储 缓存 前端开发
如何在开发过程中优化PHP的性能?
【7月更文挑战第2天】如何在开发过程中优化PHP的性能?
16 0
|
2月前
|
缓存 监控 测试技术
优化PHP应用性能的关键技巧与实践
提升PHP应用性能是开发者关注的重点之一,本文探讨了几种有效的优化技巧和实际应用策略,包括缓存策略的选择、代码优化建议以及服务器端配置的最佳实践,旨在帮助开发者有效提升PHP应用的运行效率和响应速度。【7月更文挑战第2天】
26 0
|
3月前
|
安全 编译器 PHP
PHP 8 的新特性与优化——构建更高效的Web应用程序
PHP 8 是最新的PHP版本,它引入了一系列令人激动的新特性和优化,为开发者提供了更多的工具和功能来构建高效的Web应用程序。本文将介绍PHP 8的一些重要特性,包括 JIT 编译器、新的数据结构、类型系统改进以及错误处理的增强。我们还将探讨如何利用这些新特性和优化,提升Web应用程序的性能和可维护性。
36 0
|
4月前
|
存储 缓存 自然语言处理
深入PHP内核:理解OPcache的工作原理与优化实践
【5月更文挑战第6天】 在现代Web开发中,提升性能和响应速度是持续追求的目标。PHP作为一种广泛使用的服务端脚本语言,其执行效率至关重要。本文将深入探索PHP的OPcache(优化器缓存)组件,解析其如何改善PHP的性能表现。通过剖析OPcache的工作机制,我们将讨论有效的配置策略以及实践中的最佳优化方法,旨在帮助开发者充分理解并利用OPcache来提升应用性能。
|
4月前
|
监控 Linux 应用服务中间件
linux php-fpm优化 php-fpm.conf 重要参数详解
linux php-fpm优化 php-fpm.conf 重要参数详解
81 0