如何使用android ndk(速度优化)优化本地代码



我正在使用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慢太多。

因此,我得出的结论是,这并没有得到优化。

总之,

  1. 我比较了有国旗和没有国旗的速度
  2. 当在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优化。

相关内容

  • 没有找到相关文章

最新更新