關於iOS 8 HTML5性能測試:蘋果有多愛HTML5?

 我們和其他人一樣,對於前不久蘋果iOS 8的發佈感到十分激動。在做這個測試的時候,我們手中只有iOS 8 GA版,但我們想最快的將測試結果提供給全球的web開發者,所以這個測試結果和iOS 8正式版的結果有所出入並不出奇,但是現在我們只想儘快的將benchmark和各種測試跑起來,並且分享我們發現的結果。
 
       本文記錄了在iOS 8成爲蘋果設備基準的現在,對其進行了當前版本HTML5的性能測試結果,和測試發現的技術問題。
 
iOS 8新特性將促進HTML5開發
 
       讓我們先來看看升級iOS 8的一些新特性。
 

 

        這些特性對促進HTML5開發很有幫助,我們挑選出其中重要的幾條:

 

WebGL 3D Graphics

 

        3D圖形的硬件加速支持,對web開發者來說這無疑是一個非常重要的特性。我們很想看到這條特性在遊戲中有更多的應用,不過它還有更多的其它用法,特別是在動畫和變換的領域裏。想快速瞭解它能幹什麼,點擊 WebGL Sprite Particle Demo

 

CSS Shapes

 

       能夠控制文字層的形狀,來形成更爲多變的文字佈局。

 

HTML模板

 

        Web組件的基礎元素之一。它讓我們離真正的Web模塊化和更多潛在應用又近了一步,我們將更少的依賴polyfill。

 

導航/更精確的計時API

 

       多數人可能用不到,但對於測試來說是非常讚的特性。

 

IndexedDB

 

       HTML5的Web SQL標準已不再維護並很可能在將來被廢棄,使用IndexedDB將擁有很好的跨平臺支持(iOS、Android、Chrome for Android、Safari、IE移動版等)。

 

SVG片段標示符

 

       這個特性隱藏在神祕的名字下面,但相信我們,它是一個非常強大的特性。它能構建非常強大的向量化精靈表。這不僅在web遊戲中非常重要,在動態圖標和其他動態UI組件裏也非常重要。

 

       作爲移動web開發者,你可能已經習慣於以最新瀏覽器特性爲目標而開發了,我們知道蘋果的升級系統能讓iOS 8迅速普及,如果你的應用專門爲iOS而開發,那麼你現在就能利用像IndexedDB、SVG片段標示符等新特性了。如果你想兼容iOS 7或者進行跨平臺開發,你能使用Sencha Touch內建的系統探測來利用這些特性。Sencha Touch讓你能現在就使用這些新特性並逐步的淘汰舊代碼。

 

 

全新的WKWebView

 

       隨着iOS 8的發佈,我們同時痛並快樂着,因爲iOS 8帶來了一些碎片化的問題。iOS 8裏面內建了兩個原生的webview,第一個是我們知道並喜愛的UIWebView,它因爲兼容性而保留下來,但幸運的是,蘋果並沒有簡單的將舊iOS 7 UIWebView裝進iOS 8裏,而是升級了WebKit核心模塊併發布了全新的WKWebView。WKWebView將被hybrid app所使用。它使用了Nitro JS引擎,經我們測試至少比UIWebView的性能高四倍。這將很有可能引領hybrid app獲得巨大成功。不過,目前它還有一些影響所有人的重大bug,下面我們將談到這一點。

 

       不過好消息是從Web開發的遠景看來,全新的高性能WKWebView向着正確的方向走了一大步。即使現在Javascript已經很少成爲應用瓶頸,更典型的問題是動畫和DOM重繪上,我們相信隨着對DOM核心的實質化的改進,WKWebView將幫助Sencha Touch應用在性能上看到巨大的改進。

 

性能的全面提升

 

       對版本升級的性能測試總是必要的,並且這一次我們發現了一些更有趣的結果。總體上來說,升級到iOS 8看上去對所有用戶都有利的。這裏有一些指標在iOS 8裏稍微下降了,如Base64和代碼調用。讓我們來仔細的分析一下這些圖表,來弄清楚它們都代表什麼。

 

       注意:所有測試都在第5代iPod Touch上進行,旨在找出iOS開發所需要面臨的性能下限。

 

 

Source:http://octane-benchmark.googlecode.com/svn/tags/v1/index.html

 

        這些測試裏只有CodeLoad指標iOS 8的表現略低,CodeLoad是評價JS引擎在加載非常大的JS文件後需要花多長時間開始運行,這對於Closure和jQuery這樣的庫來說是需要引起注意的。

 

 

Source:http://dromaeo.com/?dom

 

       實際的測試表現比圖表上的還要好,Dom Query的巨大提升掩蓋了其他幾項其實也是提升很大的,其中Attributes提升122%、Modification提升65%、Dom Traversal提升48%,而Dom Query的提升則是驚人的308%。

 

 

Source:http://dromaeo.com/?cssquery

 

       CSS選擇器的測試,iOS 8也獲得了全面的提升,Ext JS在簡單的移到iOS 8 Safari之後即獲得126%的時間提升。

 

       需要注意的是CSS選擇器使用的是Ext JS 3.x版本,而現在Ext JS 5.x版本已經發布,所以獲得的提升還要更大。

 

 

Source:http://dromaeo.com/?dromaeo

 

這裏Base64和Code Eval性能表現有了微小的下降,不過就像前面所說的,相對於對於JS引擎的效率來說,GPU合成纔是更值得關注的,而且其他幾項的提升也都非常大。

 

 

Source: http://ie.microsoft.com/testdrive/performance/fishietank/

 

這個測試結果已無需多說,它表明iOS 8在Canvas方面有非常大的改進。

 

 

Source: http://dromaeo.com/?cssquery

 

注意這個測試時iOS 8裏面兩個webview之間測試,WKWebView全面勝出。

 

 

Source: https://www.webkit.org/perf/sunspider/sunspider.html

 

Sunspider測試的結果相差不大。

 

 

 

Source: http://html5test.com/

 

       HTML5測試表明瞭iOS 8在HTML5支持方面也有了明顯提升,我們來簡單的分析一下其中的重要結果:

 

· 無縫的iFrame從iOS 8裏面移除

 

· IndexedDB被添加到iOS 8 Safari和WKWebView中

 

· IndexedDB目前不支持iOS 8 UIWebView和Homescreen app(設置主屏快捷方式的web app)

 

· Objectstore ArrayBuffer已經在iOS 8 Safari和WKWebView中生效(但是HTML5測試沒能測出來,要不然測試得分將達到440分)

 

· Objectstore ArrayBuffer不支持iOS 8 UIWebView和Homescreen app

 

· WebGL 3D Graphics被添加到iOS 8 Safari、WKWebView、UIWebView和Homescreen app中

 

· UIWebView、WKWebView和Homescreen app的userAgent是完全一致的

 

       儘管蘋果爲了保持WKWebView、UIWebView和Homescreen app有同一水平的可用性而做了不少工作,但其中的差異仍然造成了一些困擾,由於三者的userAgent是一樣的,開發者需要自己去標示這三者並小心的使用新特性。

 

 

Bug說明

 

       我們都知道沒有軟件的發佈沒有伴隨着bug的,iOS 8也不例外。經過探索我們發現了3個主要問題,將影響大多數HTML5開發者。

 

WKWebView 無法加載本地文件

 

       測試中WKWebView無法讀取本地文件,這讓使用PhoneGap/Cordova開發,能提供離線功能的應用失去了用武之地。比如,它不能加載本地的index.html,但訪問Web網站的功能是好的。

 

XHR本地文件訪問

 

       在WKWebView中XHR無法將本地文件發送到Web,比如使用AJAX來提交系統圖庫中的圖片將出現錯誤。

 

Homescreen app在鎖定/喚醒後失去計時功能

 

       WKWebView中Homescreen app在鎖定喚醒之後帶計時功能的函數將失效,如setTimeout、requestAnimationFrame等。

 

       不過好消息是這些Bug僅影響WKWebView應用,如果使用iOS 8 UIWebView則不會受到影響。

 

即將到來

 

       總之,我們非常高興的看到iOS 8的發佈,以及蘋果在iOS 8上表明的對HTML5的態度,因爲性能改進和新特性將極大的提升用戶在iOS 8上使用Web App的體驗。

 

 

       Source: caniuse.com

 

        如果我們看得更遠的話,我們會發現iOS 8和Chrome for Android在一些卓越的新特性上有許多交叉,Chrome for Android其實已經部分的支持了WebGL 3D Graphics但一些舊的機型沒有能力來驅動它。

 

總結

 

        對Web開發者來說,iOS 8無疑是一個令人激動的發佈,它擁有激動人心的新特性和重大的性能改進,將極大的促進HTML5跨平臺開發。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章