用profiler工具对android ndk程序进行性能分析

来源:互联网 发布:网络监控布线 编辑:程序博客网 时间:2024/05/23 01:14
在软件开发的过程中,对于一些对性能较高的程序,经常需要对程序进行性能分析。GNU profiler就是这样一款性能分析工具,后被移植到android平台上,可以对ndk程序进行分析。
使用步骤如下:
1. 下载android-ndk-profiler,地址为:https://code.google.com/p/android-ndk-profiler/wiki/Downloads?tm=2
(如果上不去google code,可以到http://download.csdn.net/detail/loushuai/8206953这里下载,或者联系我发给你)

2. 将android-ndk-profiler.zip 解压到某个目录下,比如“d:\Tools\”

3. 修改Android.mk文件,加入如下内容
LOCAL_CFLAGS := -pgLOCAL_STATIC_LIBRARIES := android-ndk-profiler

# 在Android.mk文件最后
$(call import-module,android-ndk-profiler)

4. 修改你的代码。
在初始化阶段加入(别忘了包含压缩包里的prof.h文件):
/* in the start-up code */monstartup("your_lib.so");
在退出阶段加入:
/* in the onPause or shutdown code */setenv("CPUPROFILE", "/sdcard/gmon.out", 1);moncleanup();
其中“your_lib.so”就是你的ndk编出来的动态库文件名。
"/sdcard/gmon.out"是你保存gmon.out文件的路径。

5. 修改AndroidManifest.xml文件,增加对sd卡的写访问权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

6. 重新编译工程
ndk-build NDK_MODULE_PATH=d:\Tools\
其中,“d:\Tools\”换成你实际解压android-ndk-profiler.zip的路径。

OK,至此准备工作完成。

启动你的程序,在程序退出之后,在你所指定的路径中应该会生成一个gmon.out文件。

下面是对结果进行查看的步骤:
1. 将gmon.out文件拷贝到本地,如“d:\gmon.out”


2. 将你的库文件“your_lib.so”拷贝到本地,如“d:\your_lib.so”(注意,这里的so文件不是lib下的so,而是obj/local下的


3. 用ndk工具包里的gprof工具对结果进行分析
d:\android-ndk-r9d\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-gprof.exe d:\your_lib.so d:\gmon.out就可以看到结果了。如果想把结果存成文本文件,可以使用重定向指令
d:\android-ndk-r9d\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-gprof.exe d:\your_lib.so d:\gmon.out > d:\result.txt


gprof命令的参数很多,具体可以参考官网说明。
0 0
原创粉丝点击