我正在使用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