鳥哥在裡放出了PHP7的下載連結:PHP: Get Download
比如Zval的變動對於緩衝更加友好等等
----------------------------------20151205----------------------------------
題主我表示很困惑,問個問題怎麼氣氛這麼古怪呢?有幾個方面要說明一下:
1、鳥哥確實提前放出了下載連結,貼出來也是因為提問的時候官網沒有直達,只在git有,所以方便大家下載查看。
2、我現在不是PHP程式員,只是對JIT和VM的實現比較有興趣,專門來嘲諷PHP的各位可以換一個地方噴。
回複內容:
PHP7在運行原理上與PHP5相比並沒有變化,這與hhvm不同。主要是基於perf效能分析工具進行了常規效能最佳化。
減少記憶體配置次數,多使用棧記憶體,緩衝數組hash值,字串解析成參數改為宏展開,使用大塊連續記憶體代替小塊記憶體等等。更細節資訊請看鳥哥的PHP7分享PPT。zend引擎程式的效能提升了很多,PHP程式效能自然好了。所有的最佳化都是很實在的,從細節入手積少成多。
想辦法去最佳化一個有20年歷史的程式,這是一件非常有挑戰性的事情,比推到重構難度更高。世界上有80%的網站用PHP,使用PHP7後這些網站程式無太大成本就能免費得到1倍效能提升。將節約多少CPU,節約多少電力,減少多少碳排放。另外PHP是開源項目,背後沒有商業公司,完全由社區運作。使用PHP語言的開發人員和企業從未向PHP官方付過一分錢。所以建議各位知友口下留德,無論您多麼鄙視PHP,但請尊重別人為世界所做的付出。在2015年的《PHP技術峰會》(PHPCon,上海)聽鳥哥的PHP7分享,寫過一篇解析文章,基本覆蓋了技術分享的核心內容,有興趣的同學可以看看。
(為了確保PHP7技術解析的點,不對其他同學產生誤導,專門請鳥哥做過文章review)
PHP7革新與效能最佳化
php7效能最佳化主要是細節最佳化,並沒有從本質上改變什麼,
打個比方,swoole雖然只是個擴充,但是相當於從50分到60的提高,
php7相當於從80分到90分的提高。
php是弱類型,jit比強型別難很多。
一門語言的成功是多方面的,效能只是指標之一,簡單耐操,不出亂子就是php的特色,另外糾正樓上的,php並不是完全請求釋放,有部分就是常駐的,你說的分詞完全可以隨php啟動而常駐,我們曾經就幹過這事。
最後,從沒有覺得php7的對手是node,python,ruby,java,
php7最大的對手是php5.先幹掉php5才是他最大的難題。
- PHP's new hashtable implementation
- Internal value representation in PHP 7 -1
- Internal value representation in PHP 7 - 2
see How is PHP 7 twice as fast? : PHP
世界上只有兩種語言。 一種是被人罵的。 一種是無人問津的。 就這樣。效能不知道,反正看人用著真心開心,自己也看得順眼~那些罵PHP的人,真心相對你們說,你們嫉妒心太強了。想想你們用的語言,哪個不是設計者搞了一堆一堆的所謂的規則和所謂的文法,讓你在所謂的語言世界裡跳來跳去,想想你們每天的工作內容: 是在玩電腦,還是電腦在玩你? 你們就是太見不得自己辛辛苦苦學習了一門語言,結果有一門語言可以快速學習掌握。世界在進步,接受新東西吧。不要被自己已掌握的知識框死了。PHP7效能的確有很大的提升,但個人認為還稱不上卓越二字,除非運行機制有本質的變化,否則,正如 @韓天峰 網友評論中說的那樣,對解譯器進行最佳化。PHP效能相對Java之類的半編譯或C這種編譯語言低,這個是PHP代碼運行機制決定的。做PHP的如果連這個都不懂的話,要麼不瞭解PHP,要麼只瞭解PHP。但這也不能得出PHP不如Java或C這個結論,項目一般來說需要基於開放成本和運行成本來決定選擇語言和架構,使用合適的工具幹合適的事而已,一個語言能幹什麼不能幹什麼,效能不能一票否決。開發語言熱門排行榜中PHP的排名已經足以證明PHP的成就了,很多做PHP的人不能正視這點,一般都是因為對PHP瞭解的不多或對其他語言缺乏瞭解導致的不自信。資料結構+演算法才是程式中最重要的,PHP7的最佳化正是從這兩方面來提升PHP效能的,而這也表明如果我們這些PHP程式員做得足夠好的話,我們寫出的代碼,處理同樣邏輯,會比那些垃圾的C或Java程式員的代碼效能更高。當然也有優秀的C和Java程式員,但他們是不會來嘲笑另外一種語言的,因為他們更明白資料結構+演算法=程式這個道理。
我們最近在一個項目中用Symfony,另一個項目中用Laravel,這兩個都是優秀的PHP Framework,我的感受還是堅信PHP真的不是追求高運行效能的程式設計語言。但巧妙地利用PHP弱類型這一特性,有時比Java或C#方便多了,這兩種語言的反射技術還是不如PHP反射加動態來得方便。用了大部分指令碼類語言都有的最佳化方案進行了最佳化。不能說本身效能是卓越的,語言有適用環境,不同環境下的也沒啥好比的。
作為一個簡單易用,覆蓋面廣的語言來說,PHP7相對於之前版本的變化是卓越的,在一個開源民主的社區中推進這個吃力的事情不是特別的容易。
HHVM之類的,是一個基於公司項目的產品,不會過多的考慮到外面的人是怎麼用的,的確沒有曆史的包袱,但是也意味著要用上要做相當的改變。從某種意義上(為應用帶來的額外代價)來說,用HHVM和用java沒啥區別,無非是重新拿java寫一遍還是用hhvm可以保留原先的php程式但是卻要增加一大堆營運成本。