av手机免费在线观看,国产女人在线视频,国产xxxx免费,捆绑调教一二三区,97影院最新理论片,色之久久综合,国产精品日韩欧美一区二区三区

php語(yǔ)言

了解PHP7的革新與性能優(yōu)化

時(shí)間:2025-05-26 12:14:48 php語(yǔ)言 我要投稿
  • 相關(guān)推薦

了解PHP7的革新與性能優(yōu)化

  PHP 7.0被號(hào)稱(chēng)為新一代的PHP,官方直接跳過(guò)了php 6版本(為什么跳過(guò)PHP6),將在2015年10月發(fā)布。他的重要特性主要體現(xiàn)在性能方面,據(jù)稱(chēng)性能實(shí)現(xiàn)跨越式的大幅提升。

  官方開(kāi)發(fā)組對(duì)Zend引擎底層做了大量?jī)?yōu)化來(lái)提升PHP的性能。開(kāi)發(fā)者聲稱(chēng)其性能兩倍于PHP 5。對(duì)PHP 7.0 RC2的測(cè)試顯示, 這一說(shuō)法是精確的,其實(shí)還是保守估計(jì)。評(píng)測(cè)結(jié)果顯示:PHP 7.0的速度是PHP 5.3~5.6的2~2.5倍,同時(shí)占用的內(nèi)存更少。這次PHP7的革新一定會(huì)給Web服務(wù)帶來(lái)更深刻的變化,它已經(jīng)接近Facebook開(kāi)發(fā)的PHP執(zhí)行引擎HHVM,后者通過(guò)將PHP代碼動(dòng)態(tài)翻譯成原生機(jī)器碼而大幅提高速度。

  除了性能的優(yōu)化外,其中最值得一提的就是JIT了。

  Just In Time(即時(shí)編譯)是一種軟件優(yōu)化技術(shù),指在運(yùn)行時(shí)才會(huì)去編譯字節(jié)碼為機(jī)器碼。從直覺(jué)出發(fā),我們都很容易認(rèn)為,機(jī)器碼是計(jì)算機(jī)能夠直接識(shí)別和執(zhí)行的,比起Zend讀取opcode逐條執(zhí)行效率會(huì)更高。其中,HHVM(HipHop Virtual Machine,HHVM是一個(gè)Facebook開(kāi)源的PHP虛擬機(jī))就采用JIT,讓他們的PHP性能測(cè)試提升了一個(gè)數(shù)量級(jí),放出一個(gè)令人震驚的測(cè)試結(jié)果,也讓我們直觀地認(rèn)為JIT是一項(xiàng)點(diǎn)石成金的強(qiáng)大技術(shù)。

  在PHP5.5的代碼里,因?yàn)椴](méi)有明顯類(lèi)型定義,只能靠類(lèi)型推斷。盡可能將可以推斷出來(lái)的變量類(lèi)型,定義出來(lái),然后,結(jié)合類(lèi)型推斷,將非該類(lèi)型的分支代碼去掉,生成直接可執(zhí)行的機(jī)器碼。然而,類(lèi)型推斷不能推斷出全部類(lèi)型,在WordPress中,能夠推斷出來(lái)的類(lèi)型信息只有不到30%,能夠減少的分支代碼有限。導(dǎo)致JIT以后,直接生成機(jī)器碼,生成的ByteCodes太大,最終引起CPU緩存命中大幅度下降(CPU Cache Miss)。通過(guò)JIT,可以降低VM的開(kāi)銷(xiāo),同時(shí),通過(guò)指令優(yōu)化,可以間接降低內(nèi)存管理的開(kāi)發(fā),因?yàn)榭梢詼p少內(nèi)存分配的次數(shù)。然而,對(duì)于真實(shí)的WordPress項(xiàng)目來(lái)說(shuō),CPU耗時(shí)只有25%在VM上,主要的問(wèn)題和瓶頸實(shí)際上并不在VM上。

  特別需要大家知道的是:做為業(yè)內(nèi)知名的在線平臺(tái)《慕課網(wǎng)》也已經(jīng)發(fā)布了最新的PHP7.0新特性詳解課程(http://www.imooc.com/view/438 Rango主講)

  PHP 7.0.0 RC 1 現(xiàn)已提供下載(https://downloads.php.net/ab/),Windows 源代碼和二進(jìn)制提供在( windows.php.net/qa/)。

  新增特性和改變

  1. 標(biāo)量類(lèi)型和返回類(lèi)型聲明(Scalar Type Declarations & Scalar Type Declarations)

  PHP語(yǔ)言一個(gè)非常重要的特點(diǎn)就是“弱類(lèi)型”,它讓PHP的程序變得非常容易編寫(xiě),新手接觸PHP能夠快速上手,不過(guò),它也伴隨著一些爭(zhēng)議。支持變量類(lèi)型的定義,可以說(shuō)是革新性質(zhì)的變化,PHP開(kāi)始以可選的方式支持類(lèi)型定義。除此之外,還引入了一個(gè)開(kāi)關(guān)指令declare(strict_type=1);,當(dāng)這個(gè)指令一旦開(kāi)啟,將會(huì)強(qiáng)制當(dāng)前文件下的程序遵循嚴(yán)格的函數(shù)傳參類(lèi)型和返回類(lèi)型。

  2. 更多的Error變?yōu)榭刹东@的Exception

  PHP7實(shí)現(xiàn)了一個(gè)全局的throwable接口,原來(lái)的Exception和部分Error都實(shí)現(xiàn)了這個(gè)接口(interface), 以接口的方式定義了異常的繼承結(jié)構(gòu)。于是,PHP7中更多的Error變?yōu)榭刹东@的Exception返回給開(kāi)發(fā)者,如果不進(jìn)行捕獲則為Error,如果捕獲就變?yōu)橐粋(gè)可在程序內(nèi)處理的Exception。這些可被捕獲的Error通常都是不會(huì)對(duì)程序造成致命傷害的Error,例如函數(shù)不存。PHP7進(jìn)一步方便開(kāi)發(fā)者處理,讓開(kāi)發(fā)者對(duì)程序的掌控能力更強(qiáng)。因?yàn)樵谀J(rèn)情況下,Error會(huì)直接導(dǎo)致程序中斷,而PHP7則提供捕獲并且處理的能力,讓程序繼續(xù)執(zhí)行下去,為程序員提供更靈活的選擇。

  3. AST(Abstract Syntax Tree,抽象語(yǔ)法樹(shù))

  AST在PHP編譯過(guò)程作為一個(gè)中間件的角色,替換原來(lái)直接從解釋器吐出opcode的方式,讓解釋器(parser)和編譯器(compliler)解耦,可以減少一些Hack代碼,同時(shí),讓實(shí)現(xiàn)更容易理解和可維護(hù)。

  4. Native TLS(Native Thread local storage,原生線程本地存儲(chǔ))

  PHP在多線程模式下(例如,Web服務(wù)器Apache的woker和event模式,就是多線程),需要解決“線程安全”(TS,Thread Safe)的問(wèn)題,因?yàn)榫程是共享進(jìn)程的內(nèi)存空間的,所以每個(gè)線程本身需要通過(guò)某種方式,構(gòu)建私有的空間來(lái)保存自己的私有數(shù)據(jù),避免和其他線程相互污染。而PHP5采用的方式,就是維護(hù)一個(gè)全局大數(shù)組,為每一個(gè)線程分配一份獨(dú)立的存儲(chǔ)空間,線程通過(guò)各自擁有的key值來(lái)訪問(wèn)這個(gè)全局?jǐn)?shù)據(jù)組。

  而這個(gè)獨(dú)有的key值在PHP5中需要傳遞給每一個(gè)需要用到全局變量的函數(shù),PHP7認(rèn)為這種傳遞的方式并不友好,并且存在一些問(wèn)題。因而,嘗試采用一個(gè)全局的線程特定變量來(lái)保存這個(gè)key值。

【了解PHP7的革新與性能優(yōu)化】相關(guān)文章:

分析PHP7性能優(yōu)化提升技巧07-12

PHP7性能翻倍關(guān)鍵大揭秘07-25

Java性能優(yōu)化的技巧10-19

PHP性能優(yōu)化的技巧07-18

PHP性能優(yōu)化技巧09-22

php7優(yōu)化提升技巧11-01

Java性能優(yōu)化技巧大全07-12

PS性能優(yōu)化通用技巧11-01

PHP性能優(yōu)化小技巧06-27