跨平臺開源項目Langou【基準性能測試報告】

Langou簡介

Langou是一個跨平臺(Android/iOS)前端開發框架,核心代碼使用C++編寫,底層基於OpenGL繪圖,上層實現了一個精簡的排版引擎以及一個JS/JSX運行環境。目標是想實現在此基礎上開發GUI應用程序可兼顧開發速度與運行效率。

Benchmark

iPhone6上創建10萬個Div並對相關屬性進行設置需要10秒以上的時間,但在Android上這個時間會減少到1/2,
因爲Android使用的V8,而iOS上是使用的JSC並通過膠水層粘合到V8的API,所以JS性能不如Android

對於2d繪圖GPU不是主要瓶頸,主要瓶頸集中在CPU,但可優化的空間還很大。

測試主要集中在圖形方面,這包括JS調用API的時間開銷,圖形繪製的幀率,CPU的運行百分佔比。對於文件IO以以及網絡方面的測試相對比較少,因爲庫IO本身是基於NodeJS基本沒有任何改動。

下面的數據是對iPhone6Google Nexus6iPad mini2的測試結果。

  • 注意下面的時間單位都爲毫秒,CPU佔比以單核爲準100%表示一個CPU核心滿載運行。
  • 還有一點需要注意在屏幕沒有任何變化時,CPU佔用一般爲1%左右。

View

在一個全屏Scroll視圖中創建10萬個Div視圖,然後滾動這個Scroll,這時查看CPU佔比以及頻幕刷新率。
Div視圖是自動佈局的,所以10萬個Div不會在屏幕中同時出現。這主要測試Dom的操作、視圖排版佈局、以及繪圖性能。

設備 Div數量 創建時間 Fsp CPU佔比
iPhone6 10000 1257 60 45%
Nexus6 10000 670 60 48%
iPad mini2 10000 1269 60 60%
iPhone6 20000 2457 60 58%
Nexus6 20000 1265 60 70%
iPad mini2 20000 2460 60 90%
iPhone6 50000 6162 48 97%
Nexus6 50000 2987 39 97%
iPad mini2 50000 5959 42 97%
iPhone6 100000 12647 25 97%
Nexus6 100000 5859 20 97%
iPad mini2 100000 11964 22 97%
  • 這是iPhone6截圖:

這是iPhone6截圖

  • 下面是主要的測試源碼:
new GUIApplication({ multisample: 2 }).start(
	<Root backgroundColor="#000">
		<Scroll width="full" height="full">
			${
				Array.from({length:100000}, ()=>{
					var color = new Color(random(0, 255), 
						random(0, 255), random(0, 255), 255);
					return <Div backgroundColor=color class="item" />;
				})
			}
		</Scroll>
	</Root>
)

Action

在同一屏幕隨機創建4000個視圖,並隨機設置旋轉動作,這時查看CPU佔用,與屏幕刷新率。這主要測試動作系統性能、同屏繪圖性能,以及設備的CPU與GPU的性能。CPU佔比越低幀數越高表示性能越好。

設備 數量 Fsp CPU佔比
iPhone6 1000 60 54%
Nexus6 1000 60 65%
iPad mini2 1000 60 90%
iPhone6 2000 60 98%
Nexus6 2000 40 110%
iPad mini2 2000 40 88%
iPhone6 4000 30 104%
Nexus6 4000 20 110%
iPad mini2 4000 25 104%

從數據上可以看出Nexus6的單核CPU性能不如iPhone6。

  • 下面是iPhone6截圖:

這是iPhone6截圖

CSS

創建10萬個樣式表所消耗的時間。

設備 創建時間
iPhone6 14699
Nexus6 10381
iPad mini2 14808

這裏與Dom操作很類似時間有點長,這是因爲對屬性值的解析是通過調用JS方法完成,如果這個過程在Native中,這個時間會減少很多,這也是以後的版本所需要解決的問題。

Storage

下面分別是調用20萬次storage.set()、20萬次storage.get()、20萬次storage.del()消耗的時間。

設備 set() get() del()
iPhone6 4381 3821 3547
Nexus6 7178 6539 6567
iPad mini2 4951 4256 4179

End

上面的數據只能做大體參考,對這種GUI框架的測試我現在還沒有找到比較好的標準。

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