我是iOS開發人員,我正在考慮進入Android開發。如何針對Android平臺進行鍼對性優化代碼?
在Objective-C中,我習慣於能夠使用inline
指令和低級代碼優化和調整特定的熱點(例如圖像處理)。
如何在Android中執行相同的操作?答案是Renderscript? Renderscript是否與所有Android設備兼容?
至少,我可以指定某些方法應該內聯以節省過程調用的極其嚴密的循環嗎?
我是iOS開發人員,我正在考慮進入Android開發。如何針對Android平臺進行鍼對性優化代碼?
在Objective-C中,我習慣於能夠使用inline
指令和低級代碼優化和調整特定的熱點(例如圖像處理)。
如何在Android中執行相同的操作?答案是Renderscript? Renderscript是否與所有Android設備兼容?
至少,我可以指定某些方法應該內聯以節省過程調用的極其嚴密的循環嗎?
如何在Android中執行相同操作?
如果「相同的」你的意思是「使用內置指令和低級別的代碼」,一般你不「做同樣的」。 Java中沒有「inline
指令」。歡迎您使用NDK將本機代碼添加到您的Android應用程序。
答案是Renderscript?
Renderscript Compute可以用來改善Renderscript Compute擅長的事情的性能,並且圖像處理往往是一個(至少對於某些類型的處理,比如過濾器)。
Renderscript是否與所有Android設備兼容?
AFAIK它應該在運行API Level 11和更高版本(也稱爲Android 3.0+)的所有Android設備上可用。
我可以指定某些方法應該內聯以節省過程調用的極其嚴密的循環嗎?
否。Dalvik JIT將根據自己的內部啓發式檢測並優化此類代碼。
如果您正在查看並行工作負載(通過使用forEach的內核),Renderscript Compute絕對是合適的。如果您的單線程代碼也需要一定程度的專業化/優化,您也可以使用RS Compute,儘管它可能是通過調用機制。在這些情況下使用RS Compute而不是JNI的主要好處是您的應用程序保持完全可移植性,並且不需要針對不同目標體系結構進行多次編譯/重新編譯。 –