android测试ndk,通过NDK(JNI)测试android 平台中neon性能对比

测试代码

主要修改说明:

此处不支持x86、arm64-v8a等so,只支持armeabi-v7,需要在build.gradle增加如下内容

ndk {

abiFilters "armeabi-v7a"

}

增加汇编支持,CMakeLists.txt需要增加以下内容

……

ENABLE_LANGUAGE(ASM)

……

convert_asm.s

……

增加日志在android控制台输出,修改参见native-lib.cpp

主要函数说明如下

……

//模拟1920x1080的YUV数据

#define N (1920*1080*3)

……

/**

* C 版本测试函数

*/

void reference_convert(uint8_t *__restrict dest, uint8_t *__restrict src, int n)

……

/**

* 修改部分为ARM指令后的测试函数

*/

void neon_convert(uint8_t *__restrict dest, uint8_t *__restrict src, int n)

……

//纯ARM指令(汇编)版本函数

extern "C" void convert_asm_neon(uint8_t *dest, uint8_t *src, int n) __asm__("convert_asm_neon");

测试结果

D/TEST_NEON: C version Time:22.684000ms

D/TEST_NEON: Neon version Time:13.888000ms

D/TEST_NEON: ASM version Time:0.986000ms

D/TEST_NEON: C version Time:21.759001ms

D/TEST_NEON: Neon version Time:13.948000ms

D/TEST_NEON: ASM version Time:0.641000ms

D/TEST_NEON: C version Time:21.688000ms

D/TEST_NEON: Neon version Time:13.920000ms

D/TEST_NEON: ASM version Time:0.656000ms

D/TEST_NEON: C version Time:21.735001ms

D/TEST_NEON: Neon version Time:13.958000ms

D/TEST_NEON: ASM version Time:0.945000ms

测试结论

Neon相比C快1倍左右,ASM相比C快差不多20倍

备注:不同的CPU手机测试结果有一定差距,但ASM快很多倍是毋容置疑的。

参考

相关连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《移动开发经典丛书:Android C++高级编程:使用NDK》提供了移植、开发以及利用Android平台上的C++和其他原生代码所需要的知识和技能,以便于运行图形化的高级应用和更复杂的原生应用。 内容简介   Android是移动电话市场的主要角色而且其市场份额正在持续增长。它是一个完整的、开放的、免费的移动平台,该平台给移动应用开发者提供了无限的机会。   虽然Android平台的官方程序语言是Java,但应用开发者不限于仅使用Java技术。   Android允许应用开发者通过Android原生开发包(NDK)使用诸如C和C++之类的原生代码语言实现他们的部分应用。《移动开发经典丛书·Android C++高级编程:使用NDK我们将学习如何用AndroidNDK通过原生代码语言去实现自己的Android应用性能要求较高的部分。   《移动开发经典丛书·Android C++高级编程:使用NDK》介绍了原生应用开发、可用的原生API以及故障排除技术的详细叙述,包括用按步骤的指导和屏幕截图以帮助Android开发人员迅速达到开发原生应用的目的。   主要内容:   在主要的操作系统上安装Android原生开发环境。   使用Eclipse集成开发环境开发原生代码。   使用Java原生接口(JNI)将原生代码与Java代码连接。   用SWIG自动生成JNI代码。   用POSIX和Java线程开发多线程原生应用。   用POSIXsockets开发网络原生应用。   用logging、GDB和Eclipse调试器调试原生代码。   用Valgrind分析内存问题。   用GProf测试应用性能。   用SIMD/NEON优化原生代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值