我正在使用cygwin和Windows7編譯本機代碼。 我在互聯網上獲得了許多優化技巧。如何使用android-ndk優化本地代碼(速度優化)
APP_OPTIM := release
ndk-build NDK_DEBUG=0
-DNDEBUG
LOCAL_CFLAGS += -O2
但我不明白如何設置這些Application.mk和Android.mk。 我通過應用上述提示嘗試了很多情況。 但是,我不認爲優化適用於我的本機代碼。
Application.mk
APP_PROJECT_PATH := $(shell pwd)
APP_MODULES := native_lib
APP_OPTIM := release
APP_BUILD_SCRIPT := Android.mk
APP_ABI := armeabi
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := crypto
LOCAL_SRC_FILES := lib/libcrypto.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := native_lib
LOCAL_SRC_FILES := nativeC.c \
AES/main.c \
AES/aes.c \
LOCAL_C_INCLUDES := ./lib
LOCAL_SHARED_LIBRARIES := crypto
LOCAL_CFLAGS += -O2
LOCAL_CFLAGS += -march=armv6 -marm -mfloat-abi=softfp -mfpu=vfp
LOCAL_LDLIBS += -ldl
include $(BUILD_SHARED_LIBRARY)
我希望很多評論。
此外,
首先,我試圖與上述標誌沒有它的情況下進行比較。 (例如,我使用Application.mk中的APP_OPTIM:=發佈編譯了我的程序,然後再次編譯時沒有它或使用APP_OPTIM:= debug。)但是,我看不到任何運行速度的變化。
二,這是最重要的,我的程序比較兩個模塊的速度。 (爲了方便起見,我將它們稱爲模塊A,B)模塊A是預先構建的(這是Android.mk中的libcrypto.so)。我想將優化應用到模塊B中。首先,我比較了PC(Visual Studio 2010)中模塊A和模塊B的速度測試。當我在PC中嘗試模塊A和B時,模塊B比A快(當然,我預編譯了模塊A,然後通過調用庫來使用它)。現在我將PC程序移植到它中爲Android。但在Android中,模塊B的速度比A慢。
因此,我得出結論,這並未優化。
總之,
- 我比較了標誌,並且沒有它之間的速度。
- 在PC上運行此程序時,預編譯模塊A比 B快,但在Android中,它完全相反。
你知道我的程序的問題是什麼嗎?先謝謝你。
你怎麼能告訴你的編譯代碼沒有優化? – krsteeve
我在下面的答案中添加了詳細信息。 (另外...) – user2642459
你可以編輯你的問題更多的細節,你不應該做出一個實際上不是答案的答案。 – krsteeve