成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

讓你的 PHP 7 更快 (GCC PGO)

移動開發
我們一直致力于提升PHP7的性能, 上個月我們注意到GCC的PGO能在Wordpress上能帶來近10%的性能提升, 這個讓我們很激動.

[[137597]]

我們一直致力于提升PHP7的性能, 上個月我們注意到GCC的PGO能在Wordpress上能帶來近10%的性能提升, 這個讓我們很激動.

然而, PGO正如名字所說(Profile Guided Optimization 有興趣的可以Google), 他需要用一些用例來獲得反饋, 也就是說這個優化是需要和一個特定的場景綁定的.

你對一個場景的優化, 也許在另外一個場景就事與愿違了. 它不是一個通用的優化. 所以我們不能簡單的就包含這些優化, 也無法直接發布PGO編譯后的PHP7.

當然, 我們正在嘗試從PGO找出一些共性的優化, 然后手工Apply到PHP7上去, 但這個很明顯不能做到針對一個場景的特別優化所能達到的效果, 所以我決定寫這篇文章簡單介紹下怎么使用PGO來編譯PHP7, 讓你編譯的PHP7能特別的讓你自己的獨立的應用變得更快.

首先, 要決定的就是拿什么場景去Feedback GCC, 我們一般都會選擇: 在你要優化的場景中: 訪問量最大的, 耗時最多的, 資源消耗最重的一個頁面.

拿Wordpress為例, 我們選擇Wordpress的首頁(因為首頁往往是訪問量最大的).

我們以我的機器為例:

  1. Intel(R) Xeon(R) CPU X5687 @ 3.60GHz X 16(超線程), 
  2. 48G Memory 

php-fpm 采用固定32個worker, opcache采用默認的配置(一定要記得加載opcache)

以wordpress 4.1為優化場景..

首先我們來測試下目前WP在PHP7的性能(ab -n 10000 -c 100):
 

  1. $ ab -n 10000 -c 100 http://inf-dev-maybach.weibo.com:8000/wordpress/ 
  2. This is ApacheBench, Version 2.3 <$Revision: 655654 $> 
  3. Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ 
  4. Licensed to The Apache Software Foundation, http://www.apache.org/ 
  5.  
  6. Benchmarking inf-dev-maybach.weibo.com (be patient) 
  7. Completed 1000 requests 
  8. Completed 2000 requests 
  9. Completed 3000 requests 
  10. Completed 4000 requests 
  11. Completed 5000 requests 
  12. Completed 6000 requests 
  13. Completed 7000 requests 
  14. Completed 8000 requests 
  15. Completed 9000 requests 
  16. Completed 10000 requests 
  17. Finished 10000 requests 
  18.  
  19. Server Software: nginx/1.7.12 
  20. Server Hostname: inf-dev-maybach.weibo.com 
  21. Server Port: 8000 
  22.  
  23. Document Path: /wordpress/ 
  24. Document Length: 9048 bytes 
  25.  
  26. Concurrency Level: 100 
  27. Time taken for tests: 8.957 seconds 
  28. Complete requests: 10000 
  29. Failed requests: 0 
  30. Write errors: 0 
  31. Total transferred: 92860000 bytes 
  32. HTML transferred: 90480000 bytes 
  33. Requests per second: 1116.48 [#/sec] (mean) 
  34. Time per request: 89.567 [ms] (mean) 
  35. Time per request: 0.896 [ms] (mean, across all concurrent requests) 
  36. Transfer rate: 10124.65 [Kbytes/sec] received 

可見Wordpress 4.1 目前在這個機器上, 首頁的QPS可以到1116.48. 也就是每秒鐘可以處理這么多個對首頁的請求,

現在, 讓我們開始教GCC, 讓他編譯出跑Wordpress4.1更快的PHP7來, 首先要求GCC 4.0以上的版本, 不過我建議大家使用GCC-4.8以上的版本(現在都GCC-5.1了).

第一步, 自然是下載PHP7的源代碼了, 然后做./configure. 這些都沒什么區別

接下來就是有區別的地方了, 我們要首先第一遍編譯PHP7, 讓它生成會產生profile數據的可執行文件:

  1. $ make prof-gen 

注意, 我們用到了prof-gen參數(這個是PHP7的Makefile特有的, 不要嘗試在其他項目上也這么搞哈 :) )

然后, 讓我們開始訓練GCC:

  1. $ sapi/cgi/php-cgi -T 100 /home/huixinchen/local/www/htdocs/wordpress/index.php >/dev/null 

也就是讓php-cgi跑100遍wordpress的首頁, 從而生成一些在這個過程中的profile信息.

然后, 我們開始第二次編譯PHP7.

  1. $ make prof-clean 
  2. $ make prof-use && make install 

好的, 就這么簡單, PGO編譯完成了, 現在我們看看PGO編譯以后的PHP7的性能:

  1. $ ab -n10000 -c 100 http://inf-dev-maybach.weibo.com:8000/wordpress/ 
  2. This is ApacheBench, Version 2.3 <$Revision: 655654 $> 
  3. Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ 
  4. Licensed to The Apache Software Foundation, http://www.apache.org/ 
  5.  
  6. Benchmarking inf-dev-maybach.weibo.com (be patient) 
  7. Completed 1000 requests 
  8. Completed 2000 requests 
  9. Completed 3000 requests 
  10. Completed 4000 requests 
  11. Completed 5000 requests 
  12. Completed 6000 requests 
  13. Completed 7000 requests 
  14. Completed 8000 requests 
  15. Completed 9000 requests 
  16. Completed 10000 requests 
  17. Finished 10000 requests 
  18.  
  19. Server Software: nginx/1.7.12 
  20. Server Hostname: inf-dev-maybach.weibo.com 
  21. Server Port: 8000 
  22.  
  23. Document Path: /wordpress/ 
  24. Document Length: 9048 bytes 
  25.  
  26. Concurrency Level: 100 
  27. Time taken for tests: 8.391 seconds 
  28. Complete requests: 10000 
  29. Failed requests: 0 
  30. Write errors: 0 
  31. Total transferred: 92860000 bytes 
  32. HTML transferred: 90480000 bytes 
  33. Requests per second: 1191.78 [#/sec] (mean) 
  34. Time per request: 83.908 [ms] (mean) 
  35. Time per request: 0.839 [ms] (mean, across all concurrent requests) 
  36. Transfer rate: 10807.45 [Kbytes/sec] received 

現在每秒鐘可以處理1191.78個QPS了, 提升是~7%. 還不賴哈(咦, 你不是說10%么? 怎么成7%了? 呵呵, 正如我之前說過, 我們嘗試分析PGO都做了些什么優化, 然后把一些通用的優化手工Apply到PHP7中. 所以也就是說, 那~3%的比較通用的優化已經包含到了PHP7里面了, 當然這個工作還在繼續).

于是就這么簡單, 大家可以用自己的產品的經典場景來訓練GCC, 簡單幾步, 獲得提升, 何樂而不為呢

責任編輯:chenqingxiang 來源: oschina
相關推薦

2015-06-25 10:06:31

PHP 7GCC PGO

2012-09-06 09:36:17

谷歌NatiShalom數據處理

2011-06-01 16:56:57

2009-06-23 18:00:11

微軟Windows 7瘦身

2009-05-08 08:49:17

微軟Windows 7操作系統

2024-01-08 17:09:07

Python解釋器CPython

2017-02-06 15:54:42

Windows 10Windows Def電腦

2024-10-08 10:24:41

Python編程語言

2022-01-06 22:31:21

Python技巧代碼

2011-07-06 10:27:32

ADSL

2011-07-06 10:48:12

ADSL

2009-11-13 08:53:01

Windows 7BIOS優化

2012-12-27 17:43:11

應用商店開發者

2011-07-06 10:48:42

ADSL

2012-06-15 14:02:51

火狐設置

2015-11-16 10:33:25

網絡加速網絡優化

2009-11-11 08:58:59

Windows 7系統加速

2009-10-15 09:01:51

Windows 7修改BIOS系統加速

2023-09-13 09:44:32

GLIBC系統

2014-08-28 09:35:32

Node.js前端開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线观看免费国产 | 久久久久国产成人精品亚洲午夜 | 亚洲品质自拍视频网站 | 日韩成人在线免费视频 | 欧美国产日本一区 | 日韩影院一区 | 国产一区二区三区高清 | 91在线视频播放 | 国产精品18久久久 | 欧美日韩国产一区二区三区 | 欧美精品1区2区 | 一区二区三区在线免费观看视频 | 操视频网站 | 亚洲va欧美va人人爽午夜 | 午夜成人在线视频 | 日本久久久一区二区三区 | 国产一区二区三区视频 | 一区二区精品 | 中文字幕第7页 | 天堂久久久久久久 | 成人精品视频在线观看 | 亚洲一区二区三区四区五区中文 | 国产欧美一区二区三区免费 | 久草资源| 久久精品性视频 | 麻豆一区二区三区精品视频 | 欧美精品一区在线 | 欧美一级黄色免费看 | 国产在线一区二区三区 | 精品欧美一区二区中文字幕视频 | 欧美精品一二区 | 精品国产一区二区三区免费 | www.久| 国产高清在线精品一区二区三区 | 中文字幕精品一区二区三区精品 | 99久久精品免费看国产小宝寻花 | 亚洲www啪成人一区二区麻豆 | 亚洲精品视频在线 | 中文字幕精品一区久久久久 | 久久精品屋 | 国产一二三区电影 |