今年舉辦的 WWDC 大會上,蘋果可是各種指名道姓地踩競爭對手來拔高自己,這種下三濫的營銷手段換做是別人并不稀奇,但是這可是偉大神圣的蘋果啊,有點不適應。其中大會上放出了這么一幅圖,想必大家都看到過:
我看到這張圖的第一印象是:臥槽,好牛逼!但是,我怎么有點不信呢。
雖說我相信蘋果不太可能造假,但是這個結果怎么得出來的只字未提,這不免讓我心生懷疑,80% 到底是怎么得出來的?只說結果,不說數據來源就是耍流氓啊。
本著求真務實的精神,搜了下資料,終于搞清楚這個 80% 哪里來的了。
在此之前得先給大家科普下。
瀏覽器之所以能夠工作,它的核心是一個叫做「內核」的東西,這個內核就類似于汽車的引擎,沒有它瀏覽器是沒法工作的,而市面上的內核有很多種,比如:KHTML、Presto、Trident、WebKit 等,大家熟知的瀏覽器如 Firefox、IE、Opera、Chrome、Safari 等所用的內核都不一樣,而 Chrome 和 Safari 瀏覽器所用的內核是一樣的,叫做「WebKit」,WebKit 其實是蘋果基于開源的內核 KHTML 來改造的,也是開源的。
而內核其實又分為兩部分:渲染引擎和 js 引擎。渲染引擎主要就是負責獲取網頁的 html、xml、圖片、css 等內容進行渲染顯示,js 引擎則負責解析 javascript 語言,實現網頁的動態效果。
Chrome 雖然也是基于 WebKit 內核的,但是 Google 一開始覺得 WebKit 自帶的 js 引擎性能上有問題,所以 Google 專門為 Chrome 搞了個 js 引擎叫做「V8」,所以在內核方面,Chrome 和 Safari 的主要區別就在于 js 引擎不一樣,但是即使是 js 引擎不一樣,以 Google 的技術實力,沒道理讓自家的 js 引擎比 WebKit 慢這么多啊?
終于在 WebKit 官網搞明白了原因,WebKit 官網在 6 月 5 日發表了一篇文章,地址在這里:
https://webkit.org/blog/7536/jsc-loves-es6/
這篇文章介紹了 WebKit 針對 javascript 最新的核心語言標準 ES6 進行了深度優化,而市面上大部分瀏覽器的穩定版都是基于 ES5 的,并且 Safari 開發版使用了優化后的新技術 ARES-6,并且拿線上的 Chrome 版本跟他們的開發版本進行了測試對比,還給出了一張測試截圖:
看到沒有,Chrome 的運行時間剛好是 Safari 的 1.8 倍,至此,終于算搞明白蘋果的 80% faster 是怎么來的了。
到目前為止,你們搞明白了沒?
我來給你們總結下,意思就是,蘋果在 WWDC 大會前一天發布了這篇文章,最新的 WebKit 的 js 引擎針對 ES6 進行了深度優化,并且應用在了 Safari 的開發版,然后跟 Chrome 線上沒有針對 ES6 進行優化的版本進行了對比,最后得出結論 Safari 在 js 的執行效率上比 Chrome 快 80%,然后 WWDC 上開始歡呼。
真的,得知真相的我,有點忍不住想笑。
有人問難道 Chrome 沒有針對 ES6 做優化么?當然有,只不過當時還是 Chrome 的開發版,沒有正式發布,不過 WWDC 事后,Google 不服,很快就更新了一版 Chrome,哈哈...
不過,蘋果只是自嗨而已,前一陣子 andreasgal.com 上發布了一份過去六年瀏覽器的市場份額變化數據,結果其他瀏覽器全部不行了,Chrome 市場份額遙遙領先:
有人可能會質疑 Chrome 市場份額領先這么多,是不是因為 Android 的原因,那么下圖這張僅僅是 PC 桌面市場的份額,應該有足夠說服力了:
數據來源見這里:
https://andreasgal.com/2017/05/25/chrome-won/
我自己是 Chrome 的死忠粉,其他瀏覽器我都用過,最終我還是覺得 Chrome 才真的好用,其他瀏覽器跟 Chrome 比還是有差距,具體主要表現在:
Chrome 對開發者的支持是真的強大,內置的 Chrome Dev Tools 簡直不要太好用,堪稱 web 開發必備工具;
Chrome 的插件太豐富了,基本上只有你想不到,沒有你搜不到的插件,各種有用的插件可以讓你的工作、生活更有色彩;
Chrome 有很多實用的小細節,比如地址欄輸入 zhihu.com 然后按 tab 建,則直接開啟在知乎的搜索;又比如快捷鍵 Cmd + Shift + T(windows 系統是 Ctrl + Shift + T)可以無限返回上次訪問的頁面;
Chrome 很快,是真的快。我們姑且就認為 Safari 的 js 引擎比 Chrome 的快 80%,但是你會依然覺得 Chrome 更快,原因就在于我們訪問一個網站的快慢,內核上的一點性能的區別其實感知不到,最大的速度瓶頸可能是來自網絡傳輸,而 Chrome 針對網絡傳輸做了大幅的優化,比如 Chrome 強大的預測系統,你在輸入網址的時候,Chrome 能預測你要輸入的網址,并且提前 DNS 解析與預加載,所以很多時候你輸入一個網址會覺得秒開,更何況 Safari 比 Chrome 的 js 引擎快 80% 只是自嗨而已。
不過這種針對網絡的一系列優化措施也有代價的,會導致內存占用與 CPU 消耗過大,所以很多時候大家能感受到 Chrome 很吃資源就是這個原因,然而,我覺得這是小問題,換個配置稍微高點的電腦,能讓自己的上網體驗更快速是非常值得的,尤其對于開發者來說,吃飯的家伙如果不舍得投入,那么你的工作與學習如何才能更有效率?
我不知道有多少人已經在使用 Chrome 了,作為一個使用 Chrome 6、7 年時間的忠實粉,這里必須號召下那些還沒有使用 Chrome 的同學,人生苦短,請使用 Chrome!