我被要求評估我們產品的Android平臺,並且我正在尋找各種選項,我只是剛剛抓到表面,還有一件事是困擾我的是我無法看到如何將代碼編譯爲直接的ARM代碼(沒有Thumb),我知道Thumb運行速度較慢,我們需要在代碼的關鍵部分中實現性能。Android NDK - 它支持直接的ARM代碼還是隻支持Thumb
我認爲它應該只是被設置在Android.mk
文件LOCAL_CFLAGS
的-march
標誌,但我不能得到那個工作...
誰能幫助?
我被要求評估我們產品的Android平臺,並且我正在尋找各種選項,我只是剛剛抓到表面,還有一件事是困擾我的是我無法看到如何將代碼編譯爲直接的ARM代碼(沒有Thumb),我知道Thumb運行速度較慢,我們需要在代碼的關鍵部分中實現性能。Android NDK - 它支持直接的ARM代碼還是隻支持Thumb
我認爲它應該只是被設置在Android.mk
文件LOCAL_CFLAGS
的-march
標誌,但我不能得到那個工作...
誰能幫助?
指定Android.mk
中的模塊的以下標誌將編譯直接的ARM代碼。
LOCAL_ARM_MODE := arm
啓用優化還可以幫助:
LOCAL_CFLAGS := -O3
您可以使用ARM,Thumb或兩者的組合。
在生成文件的LOCAL_SRC_FILES
中,您將列出MyFile.c
,指定MyFile.c.arm
(不要重命名磁盤上的文件,只需在源文件列表中執行此操作)。此慣例在整個Android中用於對性能至關重要的代碼(或由於某種原因只需爲ARM)。
當然,通常的注意事項是:Thumb代碼傾向於需要更多的指令來完成某些事情,但每條指令的大小都是一半,所以代碼通常比較慢一些,但也要小一點。在某些情況下,較小的尺寸可以更好地適應ARM CPU中的(微小)緩存,實際上可以更快。