我正在使用 cygwin 和 Windows7 编译本机代码。我在 Internet 上获得了许多优化技巧。
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
安卓.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 := release 编译了我的程序,然后在没有它或使用 APP_OPTIM := debug 的情况下再次编译。)但是,我看不到运行速度的任何变化。
其次,这是最重要的,我的程序比较了两个模块的速度。(为方便起见,我称它们为模块 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快,但在Android中则完全相反。
你觉得我的程序有什么问题吗?先感谢您。