簡體   English   中英

RenderScript在x86 CPU上執行速度較慢

[英]RenderScript performs slower on x86 CPU

我試圖在兩部手機上運行RenderScript,一部使用2GHz Intel Atom Z2580 CPU雙核,另一部使用2.2GHz Qualcomm Snapdragon 800 CPU四核。 盡管RenderScript確實使程序可以在兩個設備上並行運行,但我發現同一程序的絕對性能在兩個設備上都非常不同。 我做了以下實驗:

  1. 在adb shell下使用“ setprop debug.rs.max-threads”將最大運行線程限制為1(僅使用1個內核)
  2. 使用RenderScript的ScriptIntrinsicYuvToRGB和ScriptIntrinsicBlur這兩個內置的內在函數來處理原始YUV相機數據並輸出模糊的圖像。

雖然應該在字節碼級別對內在函數進行高度優化,但我發現Qualcomm Snapdragon 800的性能比Intel Atom Z2580(在實驗中都只使用1個內核)快5到6倍。 我不確定為什么會這樣。 我的猜測如下:

我做了另一個測試。 我使用ARM編譯器將一些基於NDK的簡單c代碼編譯為機器代碼,發現它也可以在Intel CPU驅動的設備上運行。 但是,如果我使用Intel編譯器來編譯相同的代碼,則會發現同一設備的速度顯着提高(3倍至4倍)。 由於我不知道設備上的libbcc編譯器對基於Intel cpu的設備上的renderscript字節代碼有何作用,性能差可能是由運行時錯誤(或不合適的)編譯目標引起的?

如果是這樣,是否有任何方法可以為基於RenderScript的基於Intel x86 cpu的設備選擇運行時編譯器?

您實際上只是在看到ARM內在函數比x86內在函數優化得多。 如果您看到x86平台使用為ARM生成的RS代碼(特別是使用NEON)進行二進制翻譯,那么我認為您會發現速度下降了3-4倍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM