我正在使用cygwin和Windows7编译本机代码。我在网上得到了很多优化技巧。
APP_OPTIM := release
ndk-build NDK_DEBUG=0
-DNDEBUG
LOCAL_CFLAGS += -O2
但我不知道如何在Application.mk和Android.mk上设置这些。我运用以上技巧尝试了很多案例。但是,我不认为优化应用在我的本地代码中。
应用程序.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)
我希望有很多评论。
此外,
首先,我尝试比较有上面标志和没有上面标志的情况。
其次,这是最重要的,我的程序比较了两个模块的速度。(为了方便起见,我称它们为模块A,B)模块A是预构建的(在Android.mk中是libcrypto.so)。我想将优化应用到模块B中。首先,我比较了模块A和B在PC(Visual Studio 2010)中的速度测试。当我在PC中尝试模块A和B时,模块B比A快。(当然,我预先编译了模块A,并通过调用库来使用它。)现在我正在将我的PC程序移植到Android程序中。但在安卓系统中,模块B比A慢太多。
因此,我得出的结论是,这并没有得到优化。
总之,
- 我比较了有国旗和没有国旗的速度
- 当在PC上运行此程序时,预编译的模块A比B、 但在安卓系统中,情况恰恰相反
你知道我的程序有什么问题吗?提前谢谢。
APP_OPTIM:=发布
将行APP_OPTIM := release
放入Application.mk文件
ndk构建ndk_DEBUG=0
只需将NDK_DEBUG=0
作为参数传递给ndk-build
脚本。一旦定义了APP_OPTIM := release
,就不需要它了。
-DNDEBUG
这应该进入你的LOCAL_CFLAGS
:
LOCAL_CFLAGS += -DNDEBUG
LOCAL_FLAGS+=-O2
这实际上不是必需的,因为Android NDK已经定义了-O2
优化。