2010-03-04 71 views
9

我被要求評估我們產品的Android平臺,並且我正在尋找各種選項,我只是剛剛抓到表面,還有一件事是困擾我的是我無法看到如何將代碼編譯爲直接的ARM代碼(沒有Thumb),我知道Thumb運行速度較慢,我們需要在代碼的關鍵部分中實現性能。Android NDK - 它支持直接的ARM代碼還是隻支持Thumb

認爲它應該只是被設置在Android.mk文件LOCAL_CFLAGS-march標誌,但我不能得到那個工作...

誰能幫助?

回答

16

指定Android.mk中的模塊的以下標誌將編譯直接的ARM代碼。

LOCAL_ARM_MODE := arm 

啓用優化還可以幫助:

LOCAL_CFLAGS := -O3 
16

您可以使用ARM,Thumb或兩者的組合。

在生成文件的LOCAL_SRC_FILES中,您將列出MyFile.c,指定MyFile.c.arm(不要重命名磁盤上的文件,只需在源文件列表中執行此操作)。此慣例在整個Android中用於對性能至關重要的代碼(或由於某種原因只需爲ARM)。

當然,通常的注意事項是:Thumb代碼傾向於需要更多的指令來完成某些事情,但每條指令的大小都是一半,所以代碼通常比較慢一些,但也要小一點。在某些情況下,較小的尺寸可以更好地適應ARM CPU中的(微小)緩存,實際上可以更快。