有的时候其实网络上资料比较多,但是自己很难找到。譬如我一直想要做Android NDK的源代码优化,知道可以利用NEON,可以利用汇编进行。但是却找不到正确的门路。所以耗费了很多时间。在针对C代码的优化上,实在是收益甚微,对某个函数进行的代码优化,对整个系统来说,影响一般很小(一方面代码本来在优化上性能的提升倍数不多,另一方面单个函数在整个系统中占用的比重都很低),所以优化了几天也见不到明显的进展。
找到一些相关的资料也花费了很多功夫,
首先找到了要在C源代码中只用NEON库需要的头文件 arm_neon.h
Android.mk 文件内容可以参考这个:
http://download.csdn.net/download/carlonelong/4153631
我做了一点修改,改后的文件如下:
找到一些相关的资料也花费了很多功夫,
首先找到了要在C源代码中只用NEON库需要的头文件 arm_neon.h
#include <arm_neon.h>
// 在代码中先添加了这行语句,然后执行ndk-build 却提示了错误
// 提示要增加什么标志,自己在 LOCAL_CXX_FLAGS 的后面添加了,但是仍然报错
// 后来搜索 NDK + NEON 终于找到了一点点苗头并开始发现。
// 遂总结如下内容
Android.mk 文件内容可以参考这个:
http://download.csdn.net/download/carlonelong/4153631
我做了一点修改,改后的文件如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# 这里填写要编译的源文件路径,这里只列举了一部分
LOCAL_SRC_FILES := NcHevcDecoder.cpp JNI_OnLoad.cpp TAppDecTop.cpp
# 默认包含的头文件路径
LOCAL_C_INCLUDES := \
$(LOCAL_PATH) \
$(LOCAL_PATH)/..
# -g 后面的一系列附加项目添加了才能使用 arm_neon.h 头文件 <pre name="code" class="cpp">
# -mfloat-abi=softfp -mfpu=neon 使用 arm_neon.h 必须
LOCAL_CFLAGS := -D__cpusplus -g -mfloat-abi=softfp -mfpu=neon -march=armv7-a -mtune=cortex-a8
LOCAL_LDLIBS := -lz -llog
TARGET_ARCH_ABI :=armeabi-v7aLOCAL_ARM_MODE := arm
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
# 采用NEON优化技术
LOCAL_ARM_NEON := true
endif
LOCAL_MODULE := NcHevcDecoder
# 生成动态调用库
include $(BUILD_STATIC_LIBRARY)
同时需要修改一下Applica