c – 如何使用android-ndk优化本机代码(速度优化)
我正在使用cygwin和
Windows7编译本机代码.
我在互联网上获得了很多优化技巧. 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) 我希望有很多评论. 此外, 首先,我尝试比较上述标志与没有标志之间的情况. (例如,我用APP_OPTIM编译我的程序:=在Application.mk中发布,然后我在没有它的情况下编译或者用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慢得多. 因此,我的结论是,这没有得到优化. 综上所述, >我比较了旗帜和没有它的速度. 你认为我的程序问题是什么?先感谢您. 解决方法
APP_OPTIM:=发布
将APP_OPTIM:= release行放入Application.mk文件中 ndk-build NDK_DEBUG = 0 只需将NDK_DEBUG = 0作为参数传递给ndk-build脚本.一旦定义APP_OPTIM:= release,就不需要它了. -DNDEBUG 这应该进入你的LOCAL_CFLAGS: LOCAL_CFLAGS += -DNDEBUG LOCAL_CFLAGS = -O2 实际上并不需要这样做,因为Android NDK已经定义了-O2优化. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |