亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

PHP7正式版測(cè)試,性能驚艷!

piapia / 1284人閱讀

摘要:開(kāi)源的事,咱先不說(shuō)了,知乎上也有熱烈的討論,我們今天就來(lái)看一下正式版的算法和應(yīng)用在其上的性能表現(xiàn)。分別在和下進(jìn)行測(cè)試,并且兩者都分別打開(kāi)和關(guān)閉,看看響應(yīng)性能是否有明顯變化??梢哉f(shuō)對(duì)高并發(fā)下的性能至為關(guān)鍵。

本周迎來(lái)2015年編程語(yǔ)言界的兩件大事,Swift 開(kāi)源, PHP7 發(fā)布。這兩件大事,都是可以載入相應(yīng)的編程語(yǔ)言的史冊(cè)級(jí)的事件。

Swift 開(kāi)源的事,咱先不說(shuō)了,知乎上也有熱烈的討論,我們今天就來(lái)看一下PHP 7正式版的算法和 wordpress 應(yīng)用在其上的性能表現(xiàn)。

PHP7 的安裝,真是非常地向下兼容,下載,解壓,把之前的配置命令用上,一路回車下去,毫無(wú)違和感。為了不影響現(xiàn)有的環(huán)境的運(yùn)行,所有專門(mén)開(kāi)辟了目錄 。

配置參數(shù)如下:

--prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysqli --with-pdo-mysql --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --disable-fileinfo --enable-maintainer-zts

GCC 版本
據(jù)鳥(niǎo)哥建議,使用新一點(diǎn)的編譯器, 推薦 GCC 4.8以上, 因?yàn)橹挥?GCC 4.8以上 PHP 才會(huì)開(kāi)啟 Global Register for opline and execute_data 支持, 這個(gè)會(huì)帶來(lái)5%左右的性能提升。所以本實(shí)驗(yàn)選用的 GCC 版本為gcc version 4.8.2 20131212 (Red Hat 4.8.2-8) (GCC)。

安裝好之后,做上軟鏈接:

ln -s /usr/local/php7/bin/php /usr/bin/php7
ln -s /usr/local/php7/bin/php-config /usr/bin/php7-config 
ln -s /usr/local/php7/bin/phpize /usr/bin/php7ize
ln -s /usr/local/php7/sbin/php-fpm /usr/sbin/php7-fpm

php7 -v 看到了我們熟悉的提示:

[root@localhost test]# php7 -v
PHP 7.0.0 (cli) (built: Dec  2 2015 19:19:14) ( ZTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies

首先做的是性能評(píng)測(cè),評(píng)測(cè)機(jī)型,首都在線云主機(jī),4核 CPU Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz,內(nèi)存4G,操作系統(tǒng) Centos 6.5。

隨便寫(xiě)了三段程序:

第一段,生成一個(gè) 60 萬(wàn)元素的數(shù)組,通過(guò)查找key 的方式,來(lái)確定key是否存在。


首先是 PHP 5.3.17 版。

[root@localhost test]# time php search_by_key.php 
real    0m0.389s
user    0m0.337s
sys     0m0.051s
[root@localhost test]# time php search_by_key.php 
real    0m0.378s
user    0m0.308s
sys     0m0.062s
[root@localhost test]# time php search_by_key.php 
real    0m0.378s
user    0m0.317s
sys     0m0.061s

其次是 PHP7 版。

[root@localhost php7]#  time php7 search_by_key.php
real    0m0.082s
user    0m0.066s
sys     0m0.014s
[root@localhost php7]#  time php7 search_by_key.php
real    0m0.080s
user    0m0.058s
sys     0m0.021s
[root@localhost php7]#  time php7 search_by_key.php
real    0m0.080s
user    0m0.053s
sys     0m0.026s`

這剛出手,就名不虛傳,響應(yīng)時(shí)間在PHP7下運(yùn)行變?yōu)樵瓉?lái)的1/4。真牛!
那我還得搞倆試試,第二段,還是上面的這個(gè)方式,不過(guò)由于速度較慢,所以變成了一個(gè)60000個(gè)元素的數(shù)組,查找值。
代碼如下:
php代碼:


[root@localhost test]# time php search_by_val.php 
real    0m24.296s
user    0m24.184s
sys     0m0.025s
[root@localhost test]# time php search_by_val.php 
real    0m25.523s
user    0m25.317s
sys     0m0.026s
[root@localhost test]# time php search_by_val.php 
real    0m26.026s
user    0m25.478s
sys     0m0.092s

等待的時(shí)間,總是覺(jué)得很漫長(zhǎng),三次測(cè)試,花掉了75秒多。下面,PHP 7 登場(chǎng)了。

[root@localhost php7]#  time php7 search_by_val.php
real    0m3.362s
user    0m3.323s
sys     0m0.007s
[root@localhost php7]#  time php7 search_by_val.php
real    0m3.266s
user    0m3.251s
sys     0m0.004s
[root@localhost php7]#  time php7 search_by_val.php
real    0m3.290s
user    0m3.275s
sys     0m0.006s

吊咋天,有沒(méi)有!速度整整提高了將近7倍。
筆者激動(dòng)的心情難以言表,順手又整了一個(gè)比較高效的素?cái)?shù)算法。算出2000000以內(nèi)的素?cái)?shù)的數(shù)目,這次咱們 PHP7先開(kāi)始。

[root@localhost php7]#  time php7 prime_v3.php 2000000
real    0m1.151s
user    0m1.129s
sys     0m0.010s
[root@localhost php7]#  time php7 prime_v3.php 2000000
real    0m1.141s
user    0m1.123s
sys     0m0.011s
[root@localhost php7]#  time php7 prime_v3.php 2000000
real    0m1.145s
user    0m1.128s
sys     0m0.010s`

速度穩(wěn)定在 1.2 S
而 PHP 5.3 呢,這次比上一次的差距小點(diǎn)了,但是PHP7速度也是它的3倍到4倍之間。

[root@localhost test]# time php prime_v3.php 2000000
prime number count under 2000000 is :148933
real    0m4.425s
user    0m4.380s
sys     0m0.023s
[root@localhost test]# time php prime_v3.php 2000000
prime number count under 2000000 is :148933
real    0m4.457s
user    0m4.414s
sys     0m0.032s
[root@localhost test]# time php prime_v3.php 2000000
prime number count under 2000000 is :148933
real    0m4.464s
user    0m4.399s
sys     0m0.046s

此素?cái)?shù)算法如下,用的是篩選法。相對(duì)是運(yùn)行速度比較快的求素?cái)?shù)算法。

$sqrt)
        {
            break;
        }
    }
     
    if(!$flag)
    {
        $ret[] = $i;
    }
}
echo (count($ret))."
";

至此,我們基本可以說(shuō)明問(wèn)題。這些代碼,并沒(méi)有使用復(fù)雜的函數(shù)庫(kù),也沒(méi)有大量的網(wǎng)絡(luò)和IO,性能卻得到了至少3倍以上的優(yōu)化。這真是一個(gè)歷史性的進(jìn)步。而在我們過(guò)去的性能評(píng)測(cè)中,語(yǔ)言層面的性能,往往是忽略的,為什么這么講呢,比如在 XHProf中,就專門(mén)有一個(gè)選項(xiàng),XHPROF_FLAGS_NO_BUILTINS,用于對(duì)內(nèi)置的函數(shù)或者內(nèi)部函數(shù)不做分析,比如數(shù)組、日期等的函數(shù)。因?yàn)榇蠹彝e(cuò)過(guò)了這塊的提升空間,當(dāng)然,一般人也無(wú)法在這塊提升,所以才有了 HHVM,也激發(fā)了今天的PHP 7。

一輪測(cè)試下來(lái),激發(fā)起了筆者對(duì)PHP 7更多了解的興趣,想看看擴(kuò)展和一些常見(jiàn)的框架支持如何,順手做了如下兩個(gè)測(cè)試。

記得在Alpha1版本的時(shí)候,OneAPM是不能支持的,這次行不行呢?筆者拿到 OneApm_php_Agent_1.0.0.18.tar 版,順利安裝。

成功地識(shí)別了PHP 7的安裝路徑。


安裝成功。

對(duì)于擴(kuò)展,我是沒(méi)有信心再測(cè)下去了,下面測(cè)兩個(gè)常用的東東,一個(gè)是Wordpress,雖然網(wǎng)站被和諧了,但是是什么地球人都知道吧。另外一個(gè)是ThinkPHP, 這是國(guó)內(nèi)使用量最廣泛的PHP開(kāi)發(fā)框架,絕對(duì)第一,不是之一。筆者也是TP的粉絲。

 是該夸這兩個(gè)軟件做得好呢?還是該夸 PHP 7的兼容做得好呢,我也不知道了,反正筆者看到了初步正常。

Wordpress 后臺(tái),在PHP 7 做為 FastCGI 后端時(shí),運(yùn)行正常。

ThinkPHP 最新版本3.2.3 在PHP 7 下運(yùn)行正常。

最后我們來(lái)做一個(gè)壓力測(cè)試,兩個(gè)wordpress,一個(gè)是基本為空的剛剛安裝的版本,一個(gè)是發(fā)布了數(shù)篇文章的版本,我們針對(duì)主頁(yè)進(jìn)行測(cè)試。分別在PHP5.5和PHP7下進(jìn)行測(cè)試,并且兩者都分別打開(kāi)和關(guān)閉Zend OpCache,看看響應(yīng)性能是否有明顯變化。
1、PHP 5.5.26 無(wú)Zend Opcache 有文章版,20個(gè)并發(fā)

2、PHP 5.5.26 無(wú)Zend Opcache 有文章版,10個(gè)并發(fā)

3、PHP 5.5.26 無(wú)Zend Opcache 無(wú)文章版,20個(gè)并發(fā)

4、PHP 5.5.26 無(wú)Zend Opcache 無(wú)文章版,10個(gè)并發(fā)

可見(jiàn)并發(fā)并沒(méi)有對(duì)總時(shí)間造成影響,有文章相比無(wú)文章,總時(shí)長(zhǎng)慢了6S,平均慢了20%。
下面我們打開(kāi)PHP 5.5.26 的Zend OpCache。
1、PHP 5.5.26 有Zend Opcache 有文章版,20個(gè)并發(fā)

2、PHP 5.5.26 有Zend Opcache 有文章版,10個(gè)并發(fā)

3、PHP 5.5.26 有Zend Opcache 無(wú)文章版,20個(gè)并發(fā)

4、PHP 5.5.26 有Zend Opcache 無(wú)文章版,10個(gè)并發(fā)

可見(jiàn),是否開(kāi)啟Zend OpCache,對(duì)性能影響極為明顯。對(duì)有文章版有2倍以上提升,對(duì)無(wú)文章版有4倍以上提升。

下面我們來(lái)測(cè)試PHP7,同樣第一次是無(wú)Zend OpCache的版本。
1、PHP 7 無(wú)Zend Opcache 有文章版,20個(gè)并發(fā)

2、PHP 7 無(wú)Zend Opcache 有文章版,10個(gè)并發(fā)

從以上數(shù)據(jù)可見(jiàn),在PHP7 對(duì)比PHP5.5.26有30%左右的性能提升,再來(lái)看一下無(wú)文章版。
3、PHP7 無(wú)Zend Opcache 無(wú)文章版,20個(gè)并發(fā)

4、PHP 7 無(wú)Zend Opcache 無(wú)文章版,10個(gè)并發(fā)

無(wú)文章版對(duì)比PHP5.5.26有 60%左右的提升。下面再來(lái)看一下開(kāi)啟PHP7下Zend OpCache的版本。
注意PHP7的Zend OpCache 與PHP5不同,不需要專門(mén)安裝擴(kuò)展,只需要在php.ini中加入如下三行配置即可。
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1

1、PHP 7 有Zend Opcache 有文章版,20個(gè)并發(fā)

2、PHP 7 有Zend Opcache 有文章版,10個(gè)并發(fā)

3、PHP 7 有Zend Opcache 無(wú)文章版,20個(gè)并發(fā)

4、PHP 7 有Zend Opcache 無(wú)文章版,10個(gè)并發(fā)

太無(wú)敵了,開(kāi)啟Zend OpCache,有5倍以上性能提升,而對(duì)比同樣開(kāi)啟Zend OpCache的5.5.26,也至少有3倍以上的性能提升??梢哉f(shuō)Zend OpCache對(duì)高并發(fā)下的性能至為關(guān)鍵。

PHP7性能的評(píng)測(cè)就到這里,從6月份推出PHP7 alpha版以來(lái),我們很欣喜地等來(lái)了PHP7正式版的發(fā)布。再次評(píng)測(cè)證明,PHP7,值得你的擁有,OneAPM for PHP 能夠深入到所有 PHP 應(yīng)用內(nèi)部完成應(yīng)用性能管理和監(jiān)控,包括代碼級(jí)別性能問(wèn)題的可見(jiàn)性、性能瓶頸的快速識(shí)別與追溯、真實(shí)用戶體驗(yàn)監(jiān)控、服務(wù)器監(jiān)控和端到端的應(yīng)用性能管理。而開(kāi)啟了Zend OpCache 的PHP7和OneAPM,更是值得你來(lái)熱烈擁有。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/21261.html

相關(guān)文章

  • PHP7源碼分析】PHP7到底有多快,基準(zhǔn)測(cè)試與特性分析告訴你

    摘要:我們修改上面代碼,再來(lái)看下返回值類型限制的情況運(yùn)行結(jié)果這段代碼我們額外聲明了返回值的類型為型。對(duì)函數(shù)返回值的聲明做了擴(kuò)充,可以定義其返回值為,無(wú)論是否開(kāi)啟嚴(yán)格模式,只要函數(shù)中有以外的其他語(yǔ)句都會(huì)報(bào)錯(cuò)。 順風(fēng)車運(yùn)營(yíng)研發(fā)團(tuán)隊(duì) 王坤 發(fā)表至21CTO公眾號(hào)(https://mp.weixin.qq.com/s/ph...) showImg(https://segmentfault.c...

    Towers 評(píng)論0 收藏0
  • 驚艷,Dubbo域名已改,也不再局限于Java!

    摘要:今天作者想去官網(wǎng)查下相關(guān)資料,發(fā)現(xiàn)官方域名由直接跳轉(zhuǎn)至下了,然后突然回想起已經(jīng)在月份正式進(jìn)入了孵化器這回事,也就不覺(jué)得奇怪了。最大的調(diào)整和亮點(diǎn)是開(kāi)始多語(yǔ)言,不再是專屬,還支持等,部分語(yǔ)言的正式版還未發(fā)布。 今天作者想去 Dubbo 官網(wǎng)查下相關(guān)資料,發(fā)現(xiàn)官方域名由 dubbo.io 直接跳轉(zhuǎn)至 dubbo.apache.org 下了,然后突然回想起 Dubbo 已經(jīng)在 2 月份正式進(jìn)入...

    sanyang 評(píng)論0 收藏0
  • Badoo 告訴你切換到 PHP7 節(jié)省了 100 萬(wàn)美元

    摘要:我們?yōu)榱颂幚磉@些挑戰(zhàn),提出了一個(gè)新的引用測(cè)試框架當(dāng)然,也是開(kāi)源的,并且在整個(gè)過(guò)程中節(jié)省了上百萬(wàn)美元。另一方面,被證實(shí)有一些嚴(yán)重的缺點(diǎn)部署困難而且慢。在緩存刷新期間,當(dāng)可用于別的進(jìn)程的已緩存的文件字節(jié)碼在此時(shí)損壞,就會(huì)導(dǎo)致崩潰。 How Badoo saved one million dollars switching to PHP7 我們成功的把我們的應(yīng)用遷移到了php7上面(數(shù)百臺(tái)機(jī)...

    biaoxiaoduan 評(píng)論0 收藏0
  • 項(xiàng)目切換PHP7.1.15

    摘要:也可以接入項(xiàng)目打包測(cè)試流程做代碼檢測(cè)。擴(kuò)展替換以后廢棄了和擴(kuò)展,項(xiàng)目中使用的使用的類使用的是已經(jīng)廢棄的擴(kuò)展使用擴(kuò)展做兼容替換。測(cè)試方案和大部分公司差不多,項(xiàng)目組劃分了線下開(kāi)發(fā)環(huán)境預(yù)發(fā)布環(huán)境和生產(chǎn)環(huán)境三個(gè)環(huán)境。 項(xiàng)目由PHP5.5切換至PHP7.1.15 背景 從2015年鳥(niǎo)哥的技術(shù)分享,我們知道PHP7是對(duì)底層實(shí)現(xiàn)得一次完全重構(gòu),函數(shù)調(diào)用機(jī)制和內(nèi)存管理等很多方便做了優(yōu)化,使PHP性能有...

    tuniutech 評(píng)論0 收藏0
  • ETM首款DAPP游戲「epony」驚艷上線,這才是區(qū)塊鏈游戲該有的樣子

    摘要:不過(guò)近段時(shí)間來(lái),區(qū)塊鏈游戲扎堆現(xiàn)象嚴(yán)重。不少業(yè)內(nèi)人士在測(cè)評(píng)和試玩后,給予了加密馬較高的評(píng)價(jià),認(rèn)為這才是區(qū)塊鏈游戲該有的樣子。同時(shí),所有的區(qū)塊鏈參數(shù)是可以定制的。 經(jīng)歷了2017年爆發(fā)式增長(zhǎng)的區(qū)塊鏈,在2018年進(jìn)入了技術(shù)應(yīng)用落地的關(guān)鍵時(shí)期。作為一種創(chuàng)新技術(shù),它正驅(qū)動(dòng)著商業(yè)模式和產(chǎn)業(yè)格局的深層變化。各行各業(yè)紛紛瞄準(zhǔn)區(qū)塊鏈技術(shù),期待能夠?qū)ふ业脚c區(qū)塊鏈相結(jié)合的應(yīng)用場(chǎng)景。 其中,發(fā)展得如火如荼...

    galois 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<