03.04 PHP航母的超級引擎發動機zend engine

PHP是最好的編程語言,這個已經成為了人們津津樂道的話題。然而關於這艘航母究竟會服役多久,它會一直航行下去嗎,它的下一站會是哪裡,對於這些問題,無數人有著強烈的好奇心,如果你也有的話,請繼續閱讀下去。

25年沒有熄火的秘密

作為一艘已經誕生25年的航母,php似乎從來沒有停航過。即使曾經史上最宏大的泰坦尼克都有過裝冰山沉沒的時候,然而PHP這25年來雖然航速有所下降,但是卻從未停止航行。

是什麼讓這艘航母一直奮進前行,答案就是它的超級引擎發動機—zend engine。


PHP航母的超級引擎發動機zend engine


PHP航母的超級引擎發動機zend engine


作為一艘巨輪,zend engine一直全速推進著php的前行,可以說如果沒有zend engine,恐怕PHP也會像泰坦尼克一樣沉沒了。

最強大的發動機

如果說航母跑得快,全靠馬力帶,那麼zend engine就是最強勁的馬達發動機,在它的牽引下,php航母始終未落下過。

PHP航母的超級引擎發動機zend engine

我們都知道php是腳本解釋性語言,這種語言的本質導致它的執行速度天然就會比編譯行的速度慢,那麼如何才能縮小這個差距呢,那就是加快解釋的速度,如何加快解釋的速度,這是php這艘航母在航行的途中遇到的最大問題,這個問題我們現在已經知道答案了,那就是它引入了zend engine這個馬達,它通過使用編譯和執行雙重加速的原理,使得php航速大幅度提升。

PHP航母的超級引擎發動機zend engine

許多人可能會有疑問,不是解釋型語言嗎,怎麼還有編譯呢?


PHP航母的超級引擎發動機zend engine

這裡我們就要對解釋型語言做個簡單介紹,所謂解釋型語言是相對編譯型語言來說的,它不經過編譯成機器碼,直接由解釋器進行解釋和執行,也就說它的核心在於解釋器,解釋器的存在,讓解釋型語言可以不經過編譯就直接運行,看似解釋型語言少了一道工序,實則是它需要每次運行都進行解釋,也就是效率反而降低了。

zend engine原理

zend engine就是我們上面提到的解釋器,它本質上就是一個虛擬機,也就是說我們的php程序就是運行在zend engine這個虛擬機裡面的。只不過我們的php程序不是直接運行在它的上面,而是我們的php opcode,也就是我們經常提到的中間碼是由虛擬機解釋執行的。

PHP航母的超級引擎發動機zend engine

zend本身是由c語言寫的,因此效率方面不需要擔心。我們需要考慮的就是zend如何加速編譯和執行php的速度,我們知道php7的性能提升了1倍不止,其核心原理就是zend加快了編譯phpcode的速度。

未來

php航母已經運行了25年了,雖然它目前在航海史上正在被java,python,go等追趕並超越著,但是在web海域裡,php從未失去它的地位,即使是在今天,web領域上面php依然佔有超過50%的份額,不過這個份額正在減少,接下來就看zend如何再次提速了。

PHP航母的超級引擎發動機zend engine

zend經過1代,2代,3代的發展,速度一次比一次快,它的下一代會給我們一個怎樣的速度我們不可預知,但是我們知道,作為超級引擎的zend從未讓我們失望過。

期待zend engine4的誕生。


分享到:


相關文章: