11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

android-ndk-profiler を使ってみた

Last updated at Posted at 2013-07-02

はじめに

http://code.google.com/p/android-ndk-profiler を使用して profile をとってみます
詳細については [Usage] (http://code.google.com/p/android-ndk-profiler/wiki/Usage)をご参照ください。

変数の定義

$PATH_TO_ANP: 展開した android-ndk-profiler をおいたディレクトリへのパス
$LIBNAME: ライブラリ名
$PATH_TO_PROJECT: プロジェクトディレクトリへのパス

環境設定

ダウンロードと展開

ここから現在最新の android-ndk-profiler-v3.2.zip を取得

展開
$ cd $PATH_TO_ANP
$ unzip android-ndk-profiler-v3.2.zip

Android.mk の編集

プロファイルを取りたいライブラリの Android.mk に android-ndk-profiler をリンクするための記述をする

Android.mk
LOCAL_CFLAGS := -pg
LOCAL_STATIC_LIBRARIES := android-ndk-profiler

Android.mk 末尾に下記を追加

Android.mk

$(call import-add-path,$PATH_TO_ANP)
$(call import-module,android-ndk-profiler)

使い方

プロファイルを取りたい箇所を monstartup と moncleanup で囲むだけ

test.cpp
#include <prof.h>

/* 測定開始*/
monstartup("$LIBNAME");

/* 何らかの処理*/

/* 測定終了*/
moncleanup();


結果の取得

プログラム実行後 /sdcard/gmon.out として結果が出力されます。

結果の取得

$ adb pull /sdcard/gmon.out

Android Application のプロセスから実行する場合 AndroidManifest.xml に下記の記載が必要になります。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

解析

下記コマンドで確認できます。

解析

$ arm-linux-androideabi-gprof $PATH_TO_PROJECT/obj/local/armeabi(-v7a)/$LIBNAME gmon.out

おまけ

graphvizGprof2Dot を使うと簡単に可視化できました。

gpof2dot

$  arm-linux-androideabi-gprof $PATH_TO_PROJECT/obj/local/armeabi(-v7a)/$LIBNAME gmon.out | gprof2dot.py | dot -Tpng -o output.png

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?