因為iOS開發者只能使用UIWebView引擎技術,iOS Chrome在Javascript性能上比Safari慢3.84倍
今天早上,Google 方面宣布 iOS Chrome 正式上線。“不要誤會,我真的喜歡在 iPhone 和 iPad 上的 Chrome 瀏覽器,不過這個 iOS 上的 Chrome 不是真正的 Chrome,它是個更慢的移動 Safari 瀏覽器。”這是來自 John Herrman 針對 iOS 上 Chrome 瀏覽器的評價。為什么會這么說呢?
我們先從 非死book 在 iOS 上的 app 開始講。非死book 在昨天透露說他們終于在做一個真正完全原生的 iOS 版 app 了。直到現在,非死book 的 app 還是以 web 技術為主,一個藍色背景的瀏覽器和手機網站。那為什么突然要做一個原生 app 呢?實際上這也是 Chrome 在 iOS 上會變慢的原因:他們都使用的是一個比 Safari 技術更慢一些的瀏覽器引擎。
移動 Safari 這個在 iOS 設備中的默認瀏覽器,使用了一個名為 Nitro 的 Javascript 引擎,這其中使用了一個叫“just-in-time”的匯編,可以讓腳本執行得更快。技術細節并不是我們想講的重點。但必須知道的是,just-in- time 可以讓 Nitro 更快,而 Nitro 則讓 Mobile Safari 更快。所以如果在手機上使用 Safari,體驗會很不錯。
但是當其他 app 如 非死book 或者一個實際上就是瀏覽器的 Chrome 想在 iOS 上具有瀏覽器的功能時,就不能用到 Nitro 引擎。同時,開發者也不能使用自己的 Javascript 引擎。出于安全因素的考慮,app 開發者只可以用 Nitro 的變種或者說是 Nitro 的過氣版本——UIWebView。這就是為什么其他瀏覽器在 iOS 中都被迫使用 UIWebView 的原因。
雖然引擎的變化一樣可以提供和移動 Safari 同保真度的結果,但這可能會使得其他瀏覽器更慢。下面是移動 Safari 和 非死book 的 app 在 Javascript 基準中的比較數據:
雖然要載入一個頁面不僅僅是執行 Javascript,而這個基準完全只是考察 Javascript,但 非死book 的 app 單單在這方面的速度就比 Safari 速度慢了四倍。對于移動應用來說,這會是一個明顯的區別,現在的頁面,特別是針對移動設備的,會有大量的 Javascript 需要跑。
在同步歷史和書簽、使用隱身模式等方面,預取的性能會幫助整體加速。Chrome 在非 iOS 系統中很受歡迎,還記得對于桌面版 Chrome 最好的評價是:它比其它瀏覽器都快。但這個評價似乎卻不能在 iOS 上打包票。在 iOS 上的 Chrome 比其他平臺上的 Chrome 要慢,它也的確在 Javascript 上,比 Safari 慢。
媒體們普遍表示 iOS 的 Chrome 要比 Safari 慢,我們也在 iPad 上對 Chrome 體驗了一下。盡管在 Javascript 方面可能 Chrome 會慢些,但在體驗中打開網頁的整體速度卻沒有讓我們覺得 Chrome 比 Safari 慢(Chrome 還是很快的)。Google 方面也對使用 UIWebView 引擎這件事做了回應:“我們的目標是想讓用戶們帶來與使用桌面版 Chrome 和 Android 版 Chrome 同樣快速、安全和穩定的瀏覽體驗。不過我們也需要接受平臺中特別的技術限制,所以我們使用了 iOS 提供的 UIWebView 的渲染和 javascript 引擎技術。”