使用android-ndk-profiler对native代码进行性能分析

android-ndk-profiler需要使用gcc进行编译,从NDK r13b 起NDK使用的默认编译器从gcc换成了clang,官方提供了Simpleperf工具进行性能分析,具体情况可以参考https://developer.android.google.cn/ndk/guides/simpleperf

下载

android-ndk-profiler的项目地址:https://github.com/richq/android-ndk-profiler

使用

编译方面的改动

修改Android.mk以导入android-ndk-profiler模块

# compile with profiling
LOCAL_CFLAGS := -pg
LOCAL_STATIC_LIBRARIES := android-ndk-profiler

# 在 Android.mk 最后
$(call import-add-path,$your_path) #导入android-ndk-profiler的路径
$(call import-module,android-ndk-profiler)
代码方面的改动

在开始和结束的方法里分别调用monstartup 和 moncleanup。

//在代码开始前
monstartup("your_lib.so");

//在代码结束后
moncleanup();

代码分析生成的gmon.out文件保存在/sdcard/gmon.out。在AndroidManifest.xml文件添加写入权限,以便应用能写入到sd卡。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

得到结果

编译程序运行,使用adb把gmon.out文件拉到电脑上。

adb pull /sdcard/gmon.out .

运行gprof工具,将带有调试信息的库(通常在 $PROJECT/obj/local/armeabi-v7a/libXXXX.so)作为参数传给gprof工具就能得到结果了。

$ANDROID_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-gprof your_lib.so
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值