php7性能提升的原因詳解
為什么PHP7的性能可以提高這么多?
1. JIT
2. Zval的改變
3. 內(nèi)部類型zend_string
4. PHP數(shù)組的變化(HashTable和Zend Array)
5. 函數(shù)調(diào)用機(jī)制(Function Calling Convention)
6. 通過宏定義和內(nèi)聯(lián)函數(shù)(inline),讓編譯器提前完成部分工作
為什么PHP7的在實(shí)際的業(yè)務(wù)性能提高才30%左右?
實(shí)際的業(yè)務(wù)不一定有很復(fù)雜的計(jì)算邏輯
實(shí)際的業(yè)務(wù)會(huì)用到Redis 和MYSQL,網(wǎng)絡(luò)和IO的瓶頸 影響了PHP7的整體性能
HTTPS的性能問題 限制了PHP7的能力
Redis Proxy的問題
Redis Proxy目的是為了做Redis高可用&分布式緩存用的
經(jīng)過性能測(cè)試,相對(duì)直接連接redis而已,用Proxy的性能損耗在10-15%左右(不同的業(yè)務(wù) 可能影響有比較大的差異)
那么Proxy是不是還有優(yōu)化的空間的呢?
PHP和Redis長(zhǎng)短鏈接的問題
PHP7 Redis長(zhǎng)連接比短連接性能高10%左右(不同的業(yè)務(wù)差別比較大
PHP7性能提升原因總結(jié):
1、存儲(chǔ)變量的結(jié)構(gòu)體變小,盡量使結(jié)構(gòu)體里成員共用內(nèi)存空間,減少引用,這樣內(nèi)存占用降低,變量的操作速度得到提升。
2、字符串結(jié)構(gòu)體的改變,字符串信息和數(shù)據(jù)本身原來是分成兩個(gè)獨(dú)立內(nèi)存塊存放,php7盡量將它們存入同一塊內(nèi)存,提升了cpu緩存命中率。
3、數(shù)組結(jié)構(gòu)的改變,數(shù)組元素和hash映射表在php5中會(huì)存入多個(gè)內(nèi)存塊,php7盡量將它們分配在同一塊內(nèi)存里,降低了內(nèi)存占用、提升了cpu緩存命中率。
4、改進(jìn)了函數(shù)的調(diào)用機(jī)制,通過對(duì)參數(shù)傳遞環(huán)節(jié)的優(yōu)化,減少一些指令操作,提高了執(zhí)行效率。
以上就是php7性能提升的原因的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
PHP實(shí)現(xiàn)股票趨勢(shì)圖和柱形圖
這篇文章主要介紹了PHP實(shí)現(xiàn)股票趨勢(shì)圖和柱形圖,本文效果基于pchart類庫(kù)實(shí)現(xiàn),給出實(shí)現(xiàn)代碼和效果圖,需要的朋友可以參考下2015-02-02
PHP實(shí)現(xiàn)的二分查找算法實(shí)例分析
這篇文章主要介紹了PHP實(shí)現(xiàn)的二分查找算法,結(jié)合實(shí)例形式分析了二分查找算法的原理與循環(huán)、遞歸等實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-12-12
9個(gè)PHP開發(fā)常用功能函數(shù)小結(jié)
9個(gè)PHP開發(fā)常用功能函數(shù)小結(jié),學(xué)習(xí)php的朋友可以參考下。2011-07-07
PHP Primary script unknown 解決方法總結(jié)
在本篇文章里小編給大家整理的是關(guān)于PHP Primary script unknown 終極解決方法以及相關(guān)知識(shí)點(diǎn),有需要的朋友們參考學(xué)習(xí)下。2019-08-08
php安裝php_rar擴(kuò)展實(shí)現(xiàn)rar文件讀取和解壓的方法
這篇文章主要介紹了php安裝php_rar擴(kuò)展實(shí)現(xiàn)rar文件讀取和解壓的方法,涉及php擴(kuò)展組件的安裝與使用相關(guān)操作技巧,需要的朋友可以參考下2016-11-11

