(57)【特許請求の範囲】
【請求項１】
端末で実行されるアプリケーションプログラムの消費電力を分析する消費電力分析システムであって、
前記アプリケーションプログラムによって呼び出された各モジュールの実行履歴からなるトレースログと、前記モジュールの実行時におけるハードウェアごとのリソース消費量が記録されたリソースログと、を取得し、前記トレースログおよび前記リソースログに基づいて、前記モジュールごとに各ハードウェアに対するリソース消費割合を算出するリソース消費割合算出手段と、
前記リソースログに基づいて前記ハードウェアごとに消費電力を算出するリソース消費電力算出手段と、
前記ハードウェアごとの消費電力と、前記モジュールごとの各ハードウェアに対するリソース消費割合とに基づいて、前記モジュールごとの消費電力を算出するモジュール消費電力算出手段と、
を備えることを特徴とする消費電力分析システム。
【請求項２】
前記リソースログは、前記端末全体でのリソース消費量が記録された第一リソースログであることを特徴とする請求項１に記載の消費電力分析システム。
【請求項３】
前記リソース消費割合算出手段は、前記トレースログに基づいて算出された前記モジュールの実行回数、または、前記トレースログに基づいて算出された前記モジュールのＣＰＵ時間の全体に占める割合を用いて前記モジュールごとのリソース消費割合を算出することを特徴とする請求項２に記載の消費電力分析システム。
【請求項４】
前記リソースログは、前記モジュールごとの各ハードウェアに対するリソース消費量が記録された第二リソースログであることを特徴とする請求項１に記載の消費電力分析システム。
【請求項５】
前記リソース消費割合算出手段は、前記第二リソースログに記録された前記モジュールごとの各ハードウェアに対するリソース消費量を前記ハードウェアに応じた係数に基づいて補正することを特徴とする請求項４に記載の消費電力分析システム。
【請求項６】
前記モジュールごとの消費電力を表示する表示手段をさらに備えることを特徴とする請求項１〜５のいずれか一項に記載の消費電力分析システム。
【請求項７】
前記表示手段は、前記トレースログに基づいてコールツリーを作成し、前記モジュールごとの消費電力を前記コールツリーに重畳して表示する消費電力コールツリー表示手段を備えることを特徴とする請求項６に記載の消費電力分析システム。
【請求項８】
前記消費電力コールツリー表示手段は、指定された期間における前記モジュールの消費電力を表示することを特徴とする請求項７に記載の消費電力分析システム。
【請求項９】
前記表示手段は、所定の時間における前記ハードウェアごとの消費電力を所定のグラフで表示するグラフ表示手段を備えることを特徴とする請求項６に記載の消費電力分析システム。
【請求項１０】
前記表示手段は、前記トレースログに基づいてコールツリーを作成し、前記モジュールごとの消費電力を前記コールツリーに重畳して表示する消費電力コールツリー表示手段をさらに備え、
前記消費電力コールツリー表示手段は、前記グラフ表示手段によって表示された前記グラフにおいて選択された部分に応じ、前記コールツリーを表示することを特徴とする請求項９に記載の消費電力分析システム。
【請求項１１】
前記グラフ表示手段は、棒グラフ又は円グラフで表示することを特徴とする請求項９又は１０に記載の消費電力分析システム。
【請求項１２】
前記端末は、無線通信端末であることを特徴とする請求項１〜１１のいずれか一項に記載の消費電力分析システム。
【請求項１３】
前記端末は、仮想端末であることを特徴とする請求項１〜１１のいずれか一項に記載の消費電力分析システム。
【請求項１４】
前記端末は、仮想端末であり、
前記第二リソースログは、前記仮想端末の低レベルＡＰＩから取得されることを特徴する請求項４又は５に記載の消費電力分析システム。
【請求項１５】
前記モジュールは、メソッドであることを特徴とする請求項１〜１４のいずれか一項に記載の消費電力分析システム。
【請求項１６】
ユーザの入力を受け付ける入力手段と、
前記入力手段によって受け付けられた入力に基づいて、アプリケーションプログラムのソースコードを編集するソースコード編集手段と、
前記入力手段によって受け付けられた入力に基づいて、前記ソースコード編集手段によって編集されたソースコードを実行するソースコード実行手段と、
前記ソースコード実行手段によって実行されたソースコードの消費電力を分析する請求項１〜１５のいずれか一項に記載の消費電力分析システムと、
を備えることを特徴とするアプリケーション開発ツール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、端末の消費電力を分析する消費電力分析システムおよびアプリケーション開発ツールに関するものである。
【背景技術】
【０００２】
バッテリ駆動の無線通信端末は、ハードウェアやソフトウェアの開発時からエンドユーザの使用時に至るまで、バッテリの持つ限られた電力を効率的に消費できるように、消費電力を予め評価した上で設計されるのが好ましい。従来から無線通信端末で使用されるアプリケーションプログラムの消費電力を評価するために、ソースコードレベルで消費電力を見積もる試みがなされてきた。下記の特許文献１には、アプリケーションプログラム実行時にトリガとなるレジストリによって指定されるハードウェアに基づいて消費電力を算出する方法が開示されている。また、下記の特許文献２には、プログラムのソースコードを解析し、演算命令１ステップの消費電力を１として、モジュール内の消費電力を合計することで各モジュールの消費電力を求める方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−７５９６５号公報
【特許文献２】特開２００８−１８６１６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１に開示された消費電力の評価方法では、レジストリとハードウェアの関係を解析する必要がある。また、ハードウェアごとの消費電力を求めたテーブルを用意する必要がある。このため、評価対象となる無線通信端末が変更された場合に、その都度解析を行う必要がある。また、上記特許文献２に開示された消費電力の評価方法では、プログラムのソースコードを解析する必要がある。このため、プログラムのソースコードが少し変更された場合でも、その都度ソースコードの解析が必要となる。これらの評価方法では、様々な無線通信端末において様々なアプリケーションプログラムを開発するような場合、所望の消費電力の評価を容易に行うことができない。
【０００５】
そこで本発明は、このような問題点を解決するために、端末の消費電力を容易に分析可能な消費電力分析システムおよびアプリケーション開発ツールを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明の消費電力分析システムは、端末で実行されるアプリケーションプログラムの消費電力を分析する消費電力分析システムであって、アプリケーションプログラムによって呼び出された各モジュールの実行履歴からなるトレースログと、モジュールの実行時におけるハードウェアごとのリソース消費量が記録されたリソースログと、を取得し、トレースログおよびリソースログに基づいて、モジュールごとに各ハードウェアに対するリソース消費割合を算出するリソース消費割合算出手段と、リソースログに基づいてハードウェアごとに消費電力を算出するリソース消費電力算出手段と、ハードウェアごとの消費電力と、モジュールごとの各ハードウェアに対するリソース消費割合とに基づいて、モジュールごとの消費電力を算出するモジュール消費電力算出手段と、を備えることを特徴とする。
【０００７】
本発明によれば、リソースログおよびトレースログに基づいてモジュールごとの消費電力を算出できる。このリソースログおよびトレースログは、いずれも端末に依存しない情報である。このため、様々なハードウェアやアプリケーションプログラムに対してモジュール単位での消費電力を算出することが可能となる。
【０００８】
また、本発明の消費電力分析システムにおいて、リソースログは、端末全体でのリソース消費量が記録された第一リソースログであるのが好ましい。このように、第一リソースログを用いることで、端末全体でのリソース消費量を取得することができる。
【０００９】
また、本発明の消費電力分析システムにおいて、リソース消費割合算出手段は、トレースログに基づいてモジュールごとのリソース消費割合を算出するのが好ましい。このモジュールごとのリソース消費割合の算出方法は、モジュールのＣＰＵ時間の全体に占める割合をリソース消費割合とする方法、対象となるモジュールの実行回数の全体に占める割合をリソース消費割合とする方法などがある。モジュールのＣＰＵ時間と第一リソースログに記録されたリソース消費量は比例関係にある。したがって、各モジュールのＣＰＵ時間をトレースログから算出し、全体のＣＰＵ時間に対してモジュールのＣＰＵ時間が占める割合をモジュールのリソース消費割合とすることができる。同様に、モジュールの実行回数と第一リソースログに記録されたリソース消費量は比例関係にある。したがって、モジュールの実行回数をトレースログから算出し、その逆数をモジュールのリソース消費割合とすることができる。
【００１０】
また、本発明の消費電力分析システムにおいて、リソースログは、モジュールごとの各ハードウェアに対するリソース消費量が記録された第二リソースログであるのが好ましい。このように、第二リソースログを用いることで、モジュールごとの各ハードウェアに対するリソース消費量を取得することができる。
【００１１】
また、本発明の消費電力分析システムにおいて、リソース消費割合算出手段は、第二リソースログに記録されたモジュールごとの各ハードウェアに対するリソース消費量をハードウェアに応じた係数に基づいて補正するのが好ましい。第二リソースログでは、アプリケーションプログラムが使用しているハードウェアのリソース消費量をすべて取得できない場合がある。このような場合に、第二リソースログに記憶されたモジュールごとの各ハードウェアに対するリソース消費量に、ハードウェアに応じた係数を掛ける、又は足すなどすることで、モジュールごとに各ハードウェアに対するリソース消費量を補正できる。
【００１２】
また、本発明の消費電力分析システムにおいて、モジュールごとの消費電力を表示する表示手段をさらに備えるのが好ましい。これによれば、モジュールごとの消費電力を可視化することができる。
【００１３】
また、本発明の消費電力分析システムにおいて、表示手段は、トレースログに基づいてコールツリーを作成し、モジュールごとの消費電力をコールツリーに重畳して表示する消費電力コールツリー表示手段を備えるのが好ましい。このように、コールツリーの形式で消費電力を表示することで、モジュールの親子関係と共に消費電力を表示することができる。このため、消費電力についてボトルネックとなるモジュールを明確化できる。
【００１４】
また、本発明の消費電力分析システムにおいて、消費電力コールツリー表示手段は、指定された期間におけるモジュールの消費電力を表示するのが好ましい。このように、指定された期間の消費電力コールツリーを表示可能とすることで、ボトルネックとなるモジュールをより一層明確化できる。
【００１５】
また、本発明の消費電力分析システムにおいて、表示手段は、所定の時間におけるハードウェアごとの消費電力を所定のグラフで表示するグラフ表示手段を備えるのが好ましい。所定の時間におけるハードウェアごとの消費電力をグラフ表示することで、消費電力についてボトルネックとなっているハードウェアを明確化できる。
【００１６】
また、本発明の消費電力分析システムにおいて、表示手段は、トレースログに基づいてコールツリーを作成し、モジュールごとの消費電力をコールツリーに重畳して表示する消費電力コールツリー表示手段をさらに備えてもよく、消費電力コールツリー表示手段は、グラフ表示手段によって表示されたグラフにおいて選択された部分に応じ、コールツリーを表示するのが好ましい。このように、選択された部分のコールツリーを表示することで、ボトルネックとなるモジュールをより一層明確化できる。また、選択されたハードウェアについての消費電力が重畳されたコールツリーを表示することも可能で、より詳細な消費電力の分析結果を提示できる。
【００１７】
また、本発明の消費電力分析システムにおいて、グラフ表示手段は、棒グラフ又は円グラフで表示するのが好ましい。このように、所定の時間におけるハードウェアごとの消費電力を棒グラフ形式又は円グラフ形式で表示することで、消費電力についてボトルネックとなっているハードウェアを明確化できる。グラフ表示手段は、消費電力を分析したいアプリケーションプログラムを実行中にリアルタイムでグラフ表示してもよい。また、グラフ表示手段は、アプリケーションプログラムを実行し終わってから、開発者によって選択された部分のグラフ表示を行ってもよい。
【００１８】
また、本発明の消費電力分析システムにおいて、端末は、無線通信端末であるのが好ましい。無線通信端末上でアプリケーションプログラムを利用するエンドユーザにとって、アプリケーションプログラムの実行やデータ送受信等によってどの程度の電力が消費されるのかを認識するのは容易ではない。また、エンドユーザは、バッテリ駆動の無線通信端末において、限られた電力を好適に利用するのが難しい。しかしながら、本発明よれば、無線通信端末のリソースログやトレースログを利用することで、実際の無線通信端末上で実行されたアプリケーションプログラムのモジュールごとの消費電力を算出することが可能となる。このように、無線通信端末の使用時において、消費電力の評価結果を提供することができる。
【００１９】
また、本発明の消費電力分析システムにおいて、端末は、仮想端末であるのが好ましい。これによれば、消費電力分析システムが実行される情報処理端末上で、仮想的なハードウェアを有する仮想端末をソフトウェアで再現し、その仮想端末のリソースログやトレースログを利用することが可能である。このため、実無線通信端末を用意しなくてもアプリケーションプログラムの消費電力を算出することが可能となる。このように、無線通信端末に搭載されるアプリケーションプログラムの開発時において、消費電力の評価結果を提供することができる。
【００２０】
また、本発明の消費電力分析システムにおいて、第二リソースログは、仮想端末の低レベルＡＰＩから取得されるのが好ましい。これによれば、仮想端末が使用する低レベルＡＰＩに予め第二リソースログを出力できるように加工しておくことで、各モジュールが使用するリソース消費量を正確に算出できる。その結果、モジュールごとに算出される消費電力の精度が向上する。
【００２１】
また、本発明のアプリケーション開発ツールは、ユーザの入力を受け付ける入力手段と、入力手段によって受け付けられた入力に基づいて、アプリケーションプログラムのソースコードを編集するソースコード編集手段と、入力手段によって受け付けられた入力に基づいて、ソースコード編集手段によって編集されたソースコードを実行するソースコード実行手段と、ソースコード実行手段によって実行されたソースコードの消費電力を分析する上記消費電力分析システムと、を備えることを特徴とする。これによれば、無線通信端末に搭載されるアプリケーションプログラムの開発時において、消費電力の評価を行うことができる。
【発明の効果】
【００２２】
本発明によれば、端末の消費電力を容易に分析することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施形態に係る消費電力分析システムの機能構成を示すブロック図である。
【図２】第一リソースログの一例を示す図である。
【図３】第二リソースログの一例を示す図である。
【図４】各メソッドのＣＰＵ時間とＷｉ−Ｆｉによるデータ通信量の一例を示す図である。
【図５】各メソッドのＧＰＳ稼働時間の一例を示す図である。
【図６】リソース消費割合算出部の出力の一例を示す図である。
【図７】（ａ）コールツリーの一例を示す図、（ｂ）ＣＰＵ時間の一例を示す図である。
【図８】端末全体の消費電力を示す消費電力評価値の一例を示す図である。
【図９】メソッド消費電力算出部の出力の一例を示す図である。
【図１０】表示部の機能構成を示すブロック図である。
【図１１】円グラフの一例を示す図である。
【図１２】棒グラフの一例を示す図である。
【図１３】消費電力コールツリーの一例を示す図である。
【図１４】図１の消費電力分析システムの処理手順を示すフローチャートである。
【図１５】アプリケーション開発ツールの機能構成を示すブロック図である。
【発明を実施するための形態】
【００２４】
以下、図面を参照して、本発明に係る消費電力分析システムの好適な実施形態について詳細に説明する。なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。
【００２５】
図１は、本実施形態の消費電力分析システム１の機能構成を示すブロック図である。消費電力分析システム１は、無線通信端末などの端末２において実行されるアプリケーションプログラムの消費電力を分析するシステムである。この消費電力分析システム１は、端末２から取得したモジュールごとのリソースログおよびトレースログを用いて、評価の対象となるアプリケーションプログラムで使用されているモジュールごとに消費電力を計算する。消費電力分析システム１は、例えば、サーバ装置などの情報処理装置である。
【００２６】
ここで、モジュールとは、アプリケーションプログラムにおける所定の機能を実現するためのプログラム部品であって、アプリケーションプログラムは、複数のモジュールを含んでいる。このモジュールは、他のモジュールによって呼び出されることがあり、また、モジュールの機能を実現するために他のモジュールを呼び出すこともある。アプリケーションプログラムを記述するために用いられるプログラム言語の種類によって、モジュールは、クラス、メソッド、サブルーチンまたは関数などと呼ばれる。例えばＪａｖａ（登録商標）では、モジュールは、クラスおよびメソッドと呼ばれる。クラスは、１以上のメソッドとデータ構造とを含んでおり、これらを用いて１以上の機能を実現する。このように、アプリケーションプログラムにおいて使用されるモジュールは、プログラム言語によって呼び方および粒度が異なるが、本発明において本質的な違いはない。そこで、本実施形態では、モジュールとしてメソッドを用いて説明を行う。
【００２７】
まず、端末２の構成を説明する。端末２は、例えば無線通信端末であって、物理的には、端末ＨＷ２２（特許請求の範囲の「ハードウェア」に相当）を備えている。端末ＨＷ２２は、端末２のハードウェア構成部品（以下、単に「ハードウェア」という場合もある）であって、例えばＣＰＵ（Central  Processing  Unit）、ＲＯＭ（Read  Only  Memory）およびＲＡＭ（Random  Access  Memory）と、外部機器（例えば、消費電力分析システム１）とデータの送受信を行うための通信装置と、端末２の現在位置を測定するＧＰＳ（Global  Positioning  System）と、各種データが記録されるストレージと、所定の被写体を撮像するカメラと、を有する。端末ＨＷ２２のＣＰＵは、端末ＨＷ２２のＲＯＭなどの内蔵メモリに格納された所定のコンピュータプログラムを端末ＨＷ２２のＲＡＭにロードして実行することにより、端末２を統合的に制御する。端末ＨＷ２２の通信装置は、例えば無線通信を行うＷｉ-Ｆｉ（Wireless  Fidelity）である。
【００２８】
また、端末２は、機能的には、ソフトウェア実行部２１と、ソフトウェア実行状態管理部２３と、部品状態管理部２４と、を備えている。これらのソフトウェア実行部２１、ソフトウェア実行状態管理部２３および部品状態管理部２４は、端末２のＣＰＵが端末２のＲＯＭ等の内蔵メモリに格納されたコンピュータプログラムを実行することによって実現される機能である。
【００２９】
ソフトウェア実行部２１は、端末２のＲＯＭなどの内蔵メモリ（又は端末２に着脱可能な記録メディア）に格納されたアプリケーションプログラム（端末ＨＷ２２のＣＰＵ等が実行可能なコンピュータプログラム）を実行する。ソフトウェア実行状態管理部２３は、ソフトウェア実行部２１によって実行されたアプリケーションプログラムについて、当該アプリケーションプログラムで呼び出されたメソッドに関する情報をソフトウェア実行部２１から取得する。そして、ソフトウェア実行状態管理部２３は、アプリケーションプログラムによって呼び出されたメソッドの実行履歴を示すトレースログを生成する。なお、トレースログには、各メソッドの実行履歴として、例えば、メソッドが呼び出された時刻およびメソッドが実行終了した時刻（呼び出し元メソッドへの戻り時刻）などが記録されている。
【００３０】
部品状態管理部２４は、端末ＨＷ２２の動作状態を示す情報を取得し、この取得した情報に基づいて端末ＨＷ２２の動作状態を示すリソースログを生成する。このリソースログは、例えば、ＯＳから提供される情報であって、端末機種に依存しない情報である。リソースログは、例えば、ＣＰＵ時間、Ｗｉ−Ｆｉの送受信データ量、ストレージの読み書きデータ量、ＧＰＳおよびカメラのそれぞれがＯＮ、ＯＦＦになった時間など、端末ＨＷ２２の各ハードウェア構成部品の動作状態および処理量といったリソース消費量を記録したログである。
【００３１】
本実施形態において、リソースログは、例えば、第一リソースログと第二リソースログとの二種類のログを含む。第一リソースログは、端末２全体でのリソース消費量を記録したログである。すなわち、第一リソースログは、端末ＨＷ２２の各ハードウェア構成要素について、端末２全体としてのリソース消費量を記録したログである。第一リソースログは、例えば、ＯＳ（Operating  System）から提供される情報（例えば、ＯＳがＬｉｎｕｘ（登録商標）の場合、／ｐｒｏｃ情報）に基づいて、一定時間ごと（例えば、１秒ごと）に取得される。
【００３２】
図２は、第一リソースログの一例を示す図である。図２に示すように、第一リソースログは、複数の第一ログ情報から構成されている。第一ログ情報は、例えば、当該第一ログ情報が取得された時間と、ＣＰＵ稼働率、ＬＣＤ（Liquid  Crystal  Display）輝度、ストレージの読み書きデータ量、無線送受信データ量、ＧＰＳ稼働時間、およびカメラ稼働時間などのリソース消費量と、を含んでいる。図２の第一ログ情報Ｌ１は、２０１０年１２月  ６日  １５時４３分４８秒の１秒間におけるログ情報であり、ＣＰＵ稼働率が１００％、ＬＣＤ輝度が２０ｃｄ／ｍ２、ストレージからの読み出しデータ量が０Ｂｙｔｅ、ストレージへの書き込みデータ量が０Ｂｙｔｅ、無線送信データ量が３６７１６Ｂｙｔｅ、無線受信データ量が２４２４９０Ｂｙｔｅであったことを示している。なお、第一ログ情報の単位は、上記のものに限られず、必要に応じて異なる単位を用いることができる。
【００３３】
第二リソースログは、アプリケーションプログラム実行中に発生するメソッド呼び出しごとに、そのメソッドが消費したリソース消費量、又はそのハードウェアが使用されているかどうかを記録したログである。特定のメソッドに対応する低レベルＡＰＩ（Application  Program  Interface）を、ＡＰＩ内部で扱われるデータをログ出力するように加工しておくことで、部品状態管理部２４は、特定のメソッドが実行される際のリソース消費量を取得し、第二リソースログを生成する。
【００３４】
図３は、第二リソースログの一例を示す図である。第二リソースログは、複数の第二ログ情報から構成されている。第二ログ情報は、当該第二ログ情報が取得された時間と、単位時間あたりの通信データ量などのリソース消費量と、メソッド名と、を含んでいる。例えば、図３の第二ログ情報Ｌ２は、１２時３４分５６秒の１秒間におけるログ情報であり、「org/apache/harmony/luni/platform/OSNetworkSystem.sendStream」というメソッドが、１１１Ｂｙｔｅ／ｍｓの通信をしたことを示している。
【００３５】
次に、消費電力分析システム１の構成を説明する。消費電力分析システム１は、機能的には、リソース消費割合算出部１１（特許請求の範囲の「リソース消費割合算出手段」に相当）と、リソース消費電力算出部１２（特許請求の範囲の「リソース消費電力算出手段」に相当）と、メソッド消費電力算出部１３（特許請求の範囲の「モジュール消費電力算出手段」に相当）と、表示部１４（特許請求の範囲の「表示手段」に相当）とを含んで構成されている。
【００３６】
リソース消費割合算出部１１は、トレースログおよびリソースログを取得し、トレースログおよびリソースログに基づいて、メソッドごとに各ハードウェアに対するリソース消費割合を算出するリソース消費割合算出手段として機能する。具体的に説明すると、リソース消費割合算出部１１は、まず第二リソースログから対象となるメソッドＸ（Ｘは、アプリケーションプログラムのメソッドに割り当てられた識別番号）の特定のハードウェアに対するリソース消費量Ｃｍｅｔｈｏｄ＿Ｘを取得する。また、リソース消費割合算出部１１は、第二リソースログからすべてのメソッドのリソース消費量Ｃａｌｌを取得する。そして、リソース消費割合算出部１１は、以下のリソース消費割合算出式（１）に基づいて、対象となるメソッドＸの特定のハードウェアに対するリソース消費割合αｒｅｓｏｕｒｃｅ＿Ｘを算出する。
リソース消費割合αresource_X=Cmethod_X/Call…(1)
【００３７】
αｒｅｓｏｕｃｅ＿Ｘは、アプリケーションプログラムのメソッドＸが所定のハードウェアを消費した量のメソッド全体に占める割合を表している。例えばハードウェアがＣＰＵである場合、リソース消費量Ｃｍｅｔｈｏｄ＿Ｘはある期間においてメソッドＸが使用したＣＰＵ時間である。また、リソース消費量Ｃａｌｌはある期間においてアプリケーションプログラム全体が使用したＣＰＵ時間を表している。
【００３８】
図４は、第二リソースログから取得したある期間内における各メソッドのＣＰＵ時間とＷｉ−Ｆｉによるデータ通信量の一例を示す図である。図４の例では、メソッドＡのＣＰＵ時間は２００ｔｉｃｋである。メソッド全体のＣＰＵ時間は６００ｔｉｃｋである。したがって、メソッドＡのＣＰＵ消費割合αＣＰＵ＿Ａは、１／３と求められる。なお、メソッドＡ、メソッドＢおよびメソッドＣは、全て異なるスレッドで動作している低レベルＡＰＩとする。
【００３９】
図５は、第二リソースログから取得した各メソッドのＧＰＳ稼働時間の一例を示す図である。図５の例では、単位時間（１〜２の期間）において、メソッドＡのＧＰＳ稼働時間は１、メソッドＢのＧＰＳ稼働時間は０．５である。したがって、メソッドＡのＧＰＳ消費割合αＧＰＳ＿Ａは、１／１．５＝２／３と求められる。なお、メソッドＡ、メソッドＢおよびメソッドＣは、全て異なるスレッドで動作している低レベルＡＰＩとする。
【００４０】
ところで、対象となるアプリケーションプログラムの各メソッドのリソース消費量は、第二リソースログに含まれる情報だけでは十分でない場合がある。例えば、無線送受信時のメソッドは、パケットのヘッダ等のデータ量を取得できない。このような場合、リソース消費割合算出部１１は、第二リソースログに含まれないリソース消費量を考慮して、対象となるメソッドの特定のハードウェアに対するリソース消費割合を算出する。すなわち、リソース消費割合算出部１１は、第二リソースログから取得したリソース消費量Ｃｍｅｔｈｏｄ＿Ｘを係数βｒｅｓｏｕｃｅおよび定数γｒｅｓｏｕｃｅに基づいて補正する。例えば、リソース消費割合算出部１１は、第二リソースログから取得したリソース消費量Ｃｍｅｔｈｏｄ＿Ｘを、以下の式（２）に基づいて補正する。
補正リソース消費量Cmethod_X’=βresouce×Cmethod_X+γresouce…(2)
【００４１】
ここで、係数βｒｅｓｏｕｃｅおよび定数γｒｅｓｏｕｃｅは、ハードウェア（リソース）に応じて定められた値である。例えば、リソース消費割合算出部１１は、無線通信を行う場合、ヘッダおよびコントロール情報について、予め１パケット当たりのデータ量を求め、それを係数βＷｉＦｉとする。そして、リソース消費割合算出部１１は、ＯＳレベルで得られたパケット数に係数βＷｉＦｉを掛け、定数γＷｉＦｉを０にすることで、メソッドのＷｉ−Ｆｉに対する補正リソース消費量Ｃｍｅｔｈｏｄ＿Ｘ’を算出する。続いて、リソース消費割合算出部１１は、以下の式（３）に基づいて対象となるメソッドのリソース消費割合を算出する。
リソース消費割合αresource_X=Cmethod_X’/Call…(3)
【００４２】
ここで、低レベルＡＰＩまでの呼び出し関係がすべてログとして出力されているので、同じ低レベルＡＰＩでも呼び出し元が違うと、リソース消費割合算出部１１は、異なるリソース消費割合αｒｅｓｏｕｒｃｅ＿Ｘとして算出する。
【００４３】
図６は、リソース消費割合算出部１１が算出したリソース消費割合αｒｅｓｏｕｒｃｅ＿Ｘの出力Ｄｒａｔｅの一例を示す図である。図６に示すように、出力Ｄｒａｔｅは、計算対象となる期間の開始時刻を示す時間情報と、リソース消費割合αｒｅｓｏｕｒｃｅ＿Ｘと、メソッドの呼び出し関係を含めたメソッド名と、を有している。図６の出力Ｄｒａｔｅは、１２時３４分５６秒から１秒間に、メソッド名「org/apache/harmony/luni/platform/OSNetworkSystem.sendStream」のメソッドの消費割合が１／２であったことを示している。
【００４４】
一方、例えば、端末２において低レベルＡＰＩを加工することができない場合、端末２の部品状態管理部２４は第二リソースログを生成できない。このように、端末２によっては、リソース消費割合算出部１１は第二リソースログを取得できない場合がある。このような場合、リソース消費割合算出部１１は、第一リソースログとトレースログとに基づいて、メソッドごとのリソース消費割合を算出する。このメソッドごとのリソース消費割合の算出方法を以下に説明する。
【００４５】
第一の算出方法は、メソッドの呼び出し回数に基づいて算出する方法である。具体的に説明すると、リソース消費割合算出部１１は、期間ｔにおいて特定のハードウェアを消費するメソッドの呼び出し回数ｎｔをトレースログから取得する。そして、リソース消費割合算出部１１は、以下の式（４）に基づいて、期間ｔにおけるメソッドごとのリソース消費割合αｒｅｓｏｕｒｃｅ＿Ｘを算出する。
リソース消費割合αresource_X=1/nt…(4)
【００４６】
第二の算出方法は、メソッドのＣＰＵ時間に基づいて算出する方法である。この方法は、特定のハードウェアがＣＰＵか否かにより算出方法が異なる。
【００４７】
特定のハードウェアがＣＰＵの場合、リソース消費割合算出部１１は、期間ｔにおいてＣＰＵを消費する各メソッドのＣＰＵ時間Ｔｍｅｔｈｏｄ＿Ｘをトレースログから取得する。また、同期間ｔにおいて最上位の親メソッドのＣＰＵ時間の総和Ｔｍａｉｎ＿ａｌｌをトレースログから取得する。ここで、メソッドのＣＰＵ時間は、当該メソッドが呼び出されてから実行終了するまでの時間である。そして、リソース消費割合算出部１１は、以下の式（５）に基づいて、期間ｔにおけるメソッドごとのリソース消費割合を算出する。
リソース消費割合αresource_X=Tmethod_X/Tmain_all…(5)
【００４８】
図７の（ａ）はコールツリーの一例を示す図、図７の（ｂ）は（ａ）のコールツリーで示された各メソッドのＣＰＵ時間の一例を示す図である。図７の（ａ）のコールツリーでは、メインメソッドがメソッドＡおよびメソッドＢを呼び出している。そして、メソッドＡがメソッドＡ１を呼び出し、メソッドＡ１がメソッドＡ２およびメソッドＡ３を呼び出している。さらに、メソッドＢがメソッドＢ１を呼び出している。
【００４９】
図７の（ｂ）の例では、メインメソッドのＣＰＵ時間Ｔｍａｉｎ＿ａｌｌは、期間ｔ内においてメインメソッドが実行されている時間を示している。各子メソッドのＣＰＵ時間は、期間ｔ内において子メソッドが親メソッドにより呼び出されてから実行終了するまでの時間を示している。例えば、メソッドＡ２のＣＰＵ時間Ｔｍｅｔｈｏｄ＿Ａ２は、メソッドＡ２がメソッドＡ１に呼び出されてから実行終了するまでの時間を示している。
【００５０】
ここで、特定のハードウェアがＣＰＵの場合、親メソッドは子メソッドを実行する以外に演算等でＣＰＵを動作させている。このため、各メソッドのリソース消費割合（ＣＰＵ消費割合）は、最上位のメソッドであるメインメソッドのＣＰＵ時間Ｔｍａｉｎ＿ａｌｌに対する各メソッドのＣＰＵ時間Ｔｍｅｔｈｏｄ＿Ｘの割合として算出される。例えば、メソッドＡ２のＣＰＵ消費割合αＣＰＵ＿Ａ２は、以下の式により算出される。
ＣＰＵ消費割合αCPU_A2=Tmethod_A2/Tmain_all
【００５１】
特定のハードウェアがＣＰＵ以外の場合、リソース消費割合算出部１１は、期間ｔにおいて特定のハードウェアを消費する各メソッドのＣＰＵ時間Ｔｍｅｔｈｏｄ＿Ｘをトレースログから取得する。また、同期間ｔにおいて特定のハードウェアを消費する全ての低レベルＡＰＩの総ＣＰＵ時間Ｔａｌｌを取得する。そして、リソース消費割合算出部１１は、以下の式（６）に基づいて、期間ｔにおけるメソッドごとのリソース消費割合を算出する。
リソース消費割合αresource_X=Tmethod_X/Tall…(6)
【００５２】
図７の例を用いて具体的に説明する。なお、メソッドＡ２およびメソッドＢ１は、特定のハードウェア（例えば、Ｗｉ-Ｆｉなど）を消費する低レベルＡＰＩであるとする。ここで、特定のハードウェアがＣＰＵ以外の場合、そのハードウェアを消費するメソッドは、低レベルＡＰＩである。また、親メソッドは当該ハードウェアを消費しない。このため、各メソッドのリソース消費割合は、そのハードウェアを消費する低レベルＡＰＩのＣＰＵ時間の総和Ｔａｌｌに対する各メソッドのＣＰＵ時間Ｔｍｅｔｈｏｄ＿Ｘの割合として算出される。例えば、メソッドＡ２のリソース消費割合αｒｅｓｏｕｃｅ＿Ａ２は、以下の式により算出される。この場合、特定のハードウェアに関する総ＣＰＵ時間Ｔａｌｌは、メソッドＡ２のＣＰＵ時間Ｔｍｅｔｈｏｄ＿Ａ２とメソッドＢ１のＣＰＵ時間Ｔｍｅｔｈｏｄ＿Ｂ１との和である。
リソース消費割合αresouce_A2=Tmethod_A2/(Tmethod_A2+Tmethod_B1)
【００５３】
なお、メソッドの呼び出し関係は、トレースログを解析することによって得ることができる。したがって、リソース消費割合算出部１１は、図６で示した出力Ｄｒａｔｅと同様のフォーマットで出力を行う。
【００５４】
図１に戻り、リソース消費電力算出部１２は、端末２の部品状態管理部２４が取得した第一リソースログに基づいて、端末２全体の消費電力(ハードウェアごとの内訳を含む)を算出するリソース消費電力算出手段として機能する。具体的に説明すると、リソース消費電力算出部１２は、第一リソースログと、該第一リソースログに記憶されている第一ログ情報の各パラメータ（後述のｐｊ）に応じて予め設定された電力係数（後述のｃｉｊ）の値と、に基づき、以下の消費電力評価式（７）および式（８）に従って、端末ＨＷ２２の各ハードウェアの消費電力Ｐｒｅｓｏｕｒｃｅおよび端末２全体の消費電力Ｐａｌｌの評価値を算出する。
【数１】
0005787259.tif 000002
【数２】
0005787259.tif 000003
【００５５】
上記式（７）および式（８）において、ｉはハードウェアの識別番号を表しており、１〜Ｎ（Ｎは、端末２の端末ＨＷ２２に含まれる構成部品の総数）の整数値である。Ｐｒｅｓｏｕｒｃｅ＿ｉは、ｉ番目のハードウェアの消費電力を表している。また、上記式（７）において、ｊは第一ログ情報に含まれているパラメータの識別番号を表しており、１〜Ｍ（Ｍは、第一ログ情報に含まれているパラメータの総数）の整数値である。ｐｊは、第一ログ情報に含まれているｊ番目のパラメータを表している。ｃｉｊは、ｊ番目のパラメータがｉ番目のハードウェアの消費電力に与える影響度を示す電力係数を表している。この電力係数ｃｉｊは、リソース消費電力算出部１２に予め設定されている。電力係数ｃｉｊは、例えば特開２０１０−２２５１３３号公報に記載された手法により算出可能である。なお、電力係数ｃｉｊの算出方法は、これに限定されない。また、上記式（８）において、Ｐａｌｌは、端末２全体の消費電力を表している。
【００５６】
図８は、端末２全体の消費電力を示す消費電力評価値の一例を示す図である。図８に示すように、消費電力評価値は、時間情報と、端末ＨＷ２２の各ハードウェアの消費電力Ｐｒｅｓｏｕｒｃｅと、を含んでいる。時間情報は、消費電力の計算対象となる期間の開始時刻を示している。消費電力Ｐｒｅｓｏｕｒｃｅは、時間情報が示す開始時刻から単位時間経過するまでのハードウェアごとの消費電力を示している。例えば、図８の消費電力評価値Ｐｒは、１２時３４分５６秒から１秒間を計算の対象としている。そして、この期間においてＣＰＵの消費電力ＰＣＰＵは０．２３Ｗ、Ｗｉ-Ｆｉの消費電力ＰＷｉＦｉは０．１Ｗ、ＬＣＤの消費電力ＰＬＣＤは０．２Ｗ、ストレージＰＳＴＯＲＡＧＥの消費電力は０．１Ｗ、ＧＰＳの消費電力ＰＧＰＳは０．０Ｗであったことを示している。また、これらの各ハードウェアの消費電力の総和は、端末２全体の消費電力Ｐａｌｌを示す。このようにして、リソース消費割合算出部１１は、ハードウェアごとの消費電力Ｐｒｅｓｏｕｒｃｅおよび端末２全体の消費電力Ｐａｌｌを算出する。
【００５７】
図１に戻って、メソッド消費電力算出部１３は、ハードウェアごとの消費電力Ｐｒｅｓｏｕｒｃｅと、メソッドごとの各ハードウェアに対するリソース消費割合αｒｅｓｏｕｒｃｅ＿Ｘとに基づいて、メソッドごとの消費電力Ｐｍｅｔｈｏｄ＿Ｘを算出するメソッド消費電力算出手段として機能する。具体的には、メソッド消費電力算出部１３は、以下のメソッド消費電力算出式（９）に基づいて、各メソッドの消費電力Ｐｍｅｔｈｏｄ＿Ｘを算出する。
【数３】
0005787259.tif 000004
【００５８】
上記式（９）において、Ｐｍｅｔｈｏｄ＿Ｘは、メソッドＸの消費電力を表している。ｉはハードウェアの識別番号を表しており、１〜Ｎ（Ｎは、端末２の端末ＨＷ２２に含まれる構成部品の総数）の整数値である。Ｐｒｅｓｏｕｒｃｅ＿ｉは、ｉ番目のハードウェアの消費電力を表している。また、αｒｅｓｏｕｒｃｅ＿ｉ＿Ｘは、ｉ番目のハードウェアに対するメソッドＸの消費割合を表している。例えば、端末ＨＷ２２に含まれるハードウェアがＣＰＵとＷｉ-ＦｉとＧＰＳとカメラである場合、メソッドＡの消費電力は、以下の式で算出される。
Pmethod_A=PCPU×αCPU_A+PWiFi×αWiFi_A+PGPS×αGPS_A+Pcamera×αcamera_A
【００５９】
図９は、メソッド消費電力算出部１３が算出した単位時間におけるメソッドごとの消費電力を含む出力Ｄｐｏｗｅｒの一例を示す図である。図９に示すように、出力Ｄｐｏｗｅｒは、計算対象の開始時刻を示す時間情報と、メソッドが使用した消費電力と、メソッドの呼び出し関係も含めたメソッド名と、を有している。図９の出力Ｄｐｏｗｅｒは、１２時３４分５６秒から１秒間に、メソッド名「org/apache/harmony/luni/platform/OSNetworkSystem.sendStream」のメソッドの消費電力が０．５Ｗであったことを示している。
【００６０】
メソッド消費電力算出部１３は、この出力Ｄｐｏｗｅｒを表示部１４に送信する。また、メソッド消費電力算出部１３は、メソッドが呼び出された時間を示す時間情報を含むトレースログを表示部１４に送信する。
【００６１】
表示部１４は、メソッドごとの消費電力を表示する表示手段として機能する。図１０は、表示部１４の機能構成を示すブロック図である。図１０に示すように、表示部１４は、グラフ表示部１４１（特許請求の範囲の「グラフ表示手段」に相当）と、消費電力コールツリー表示部１４２（特許請求の範囲の「消費電力コールツリー表示手段」に相当）と、を備えている。
【００６２】
グラフ表示部１４１は、所定の時間におけるハードウェアごとの消費電力を所定のグラフで表示するグラフ表示手段として機能する。グラフ表示部１４１は、消費電力を分析したいアプリケーションプログラムを実行中にリアルタイムでグラフ表示してもよい。また、グラフ表示部１４１は、アプリケーションプログラムを実行し終わってから、開発者によって選択された部分のグラフ表示を行ってもよい。グラフ表示部１４１は、例えば、円グラフ表示部１４１ａと棒グラフ表示部１４１ｂとを備えている。
【００６３】
円グラフ表示部１４１ａは、ある時間でのハードウェアごとの消費電力の消費割合を円グラフで表示する。具体的に説明すると、円グラフ表示部１４１ａは、リソース消費電力算出部１２によって算出された各ハードウェアの消費電力Ｐｒｅｓｏｕｒｃｅを端末２全体の消費電力Ｐａｌｌで割ることで各ハードウェアの消費電力の消費割合を算出する。そして、円グラフ表示部１４１ａは、各ハードウェアの消費電力の消費割合を円グラフで表示する。図１１は、円グラフ表示部１４１ａによって表示される円グラフの一例を示す図である。
【００６４】
表示された円グラフ上で所定のハードウェアの消費割合を示す部分がユーザによって選択された場合、円グラフ表示部１４１ａは、選択されたハードウェアを示す情報を消費電力コールツリー表示部１４２に送信する。
【００６５】
棒グラフ表示部１４１ｂは、ある時間でのハードウェアごとの消費電力の消費割合を棒グラフで表示する。具体的に説明すると、棒グラフ表示部１４１ｂは、リソース消費電力算出部１２によって算出された各ハードウェアの消費電力Ｐｒｅｓｏｕｒｃｅを端末２全体の消費電力Ｐａｌｌで割ることで各ハードウェアの消費電力の消費割合を算出する。そして、棒グラフ表示部１４１ｂは、各ハードウェアの消費電力の消費割合を棒グラフで表示する。図１２は、棒グラフ表示部１４１ｂによって表示される棒グラフの一例を示す図である。図１２の縦軸は、端末２全体の消費電力Ｐａｌｌを１とした場合の各ハードウェアの消費電力の消費割合を示している。図１２の横軸は、計算対象となる期間の開始時刻を識別する識別情報である。
【００６６】
表示された棒グラフ上で所定のハードウェアの消費割合を示す部分がユーザによって選択された場合、棒グラフ表示部１４１ｂは、選択されたハードウェアを示す情報を消費電力コールツリー表示部１４２に送信する。
【００６７】
消費電力コールツリー表示部１４２は、トレースログに基づいてコールツリーを作成し、メソッドごとの消費電力をコールツリーに重畳して表示する消費電力コールツリー表示手段として機能する。消費電力コールツリー表示部１４２は、コールツリー作成部１４２ａと、消費電力重畳部１４２ｂと、を備えている。
【００６８】
コールツリー作成部１４２ａは、メソッド消費電力算出部１３から出力されたトレースログに基づいて、単位時間におけるメソッドごとの呼び出し関係を解析し、コールツリーを作成する。このコールツリーは、時間軸に関係なく、実行されたアプリケーションプログラムが使用したメソッドを表示している。消費電力重畳部１４２ｂは、コールツリー作成部１４２ａによって作成されたコールツリーのメソッド名に基づいて、メソッド消費電力算出部１３によって算出されたメソッドごとの消費電力Ｐｍｅｔｈｏｄ＿Ｘを重畳する。そして、消費電力コールツリー表示部１４２は、コールツリーにメソッドごとの消費電力Ｐｍｅｔｈｏｄ＿Ｘを重畳した消費電力コールツリーを表示する。
【００６９】
図１３は、消費電力コールツリー表示部１４２によって表示される消費電力コールツリーＴｐｏｗｅｒの一例を示す図である。図１３に示すように、消費電力コールツリーは、コールツリーＴｃａｌｌと、消費電力テーブルＰｍとを含んでいる。コールツリーＴｃａｌｌは、親メソッドによって呼び出されるメソッドの関係をツリー構造で示している。図１３の例では、コールツリーＴｃａｌｌは、アプリケーションプログラムＡＰがメソッドａおよびメソッドｂを呼び出すことを示している。そして、コールツリーＴｃａｌｌは、メソッドａがメソッドａａおよびメソッドａｂを呼び出し、メソッドｂがメソッドｂａおよびメソッドｂｂを呼び出すことを示している。
【００７０】
消費電力テーブルＰｍは、各メソッドの消費電力を示している。図１３の例では、消費電力テーブルＰｍは、メソッドａａ、メソッドａｂ、メソッドｂａ、およびメソッドｂｂの消費電力を示している。具体的には、図１３の例では、消費電力テーブルＰｍは、各メソッドの消費電力Ｐｍｅｔｈｏｄ＿Ｘと、各メソッドのハードウェアごとの消費電力Ｐｍｅｔｈｏｄ＿ｉ＿Ｘと、ＣＰＵ時間と、を表示している。
【００７１】
また、消費電力コールツリー表示部１４２は、ユーザによって選択されたハードウェアの情報をグラフ表示部１４１から受信すると、そのハードウェアを使用するメソッドに関する消費電力コールツリーを表示する。この際、消費電力コールツリー表示部１４２は、グラフ表示部１４１によって表示されたグラフとともに消費電力コールツリーを表示するようにしてもよい。選択したハードウェアを使用するメソッドのコールツリーと消費電力とを重畳表示することで、グラフで示された消費電力をメソッドごとの消費電力に細分化して表示できる。
【００７２】
例えば、図１１および図１２のように、グラフ表示部１４１によって任意の時間のハードウェアごとの消費電力が表示されている場合、ＣＰＵ以外ではＷｉ-Ｆｉの消費出力の割合が大きいことが分かる。図１１又は図１２のグラフにおいてＷｉ-Ｆｉを示す部分が選択されると、消費電力コールツリー表示部１４２は、グラフ表示部１４１からＷｉ-Ｆｉが選択されたことを示す情報を受信する。そして、消費電力コールツリー表示部１４２は、Ｗｉ-Ｆｉに関する消費電力とコールツリーとを重畳した消費電力コールツリーを表示する。これにより、Ｗｉ-Ｆｉにおいて、消費電力についてボトルネックとなっているメソッドが判明する。
【００７３】
次に、図１４を参照して、消費電力分析システム１の動作について説明する。図１４は、消費電力分析システム１の処理を示すフローチャートである。
【００７４】
リソース消費割合算出部１１は、端末２からリソースログを取得する（Ｓ１１）。また、リソース消費割合算出部１１は、端末２からトレースログを取得する（Ｓ１２）。そして、リソース消費割合算出部１１は、取得したリソースログとトレースログとを用いて、上記式（１）、上記式（３）、上記式（４）、上記式（５）、又は、上記式（６）によりメソッドごとのリソース消費割合を算出する（Ｓ１３）。次に、リソース消費電力算出部１２は、端末２から取得したリソースログを用いて、上記式（７）および上記式（８）により端末２全体の消費電力（端末ＨＷ２２のハードウェアごとの消費電力を含む）を算出する（Ｓ１４）。
【００７５】
そして、メソッド消費電力算出部１３は、上記式（９）によりメソッドごとのリソース消費割合と端末２全体の消費電力とに基づいて、メソッドごとの消費電力を算出する（Ｓ１５）。次に、表示部１４のコールツリー作成部１４２ａは、端末２から取得したトレースログに基づいて、メソッドの親子関係を解析してコールツリーを作成する（Ｓ１６）。続いて、消費電力重畳部１４２ｂは、コールツリーにメソッドごとの消費電力を重畳して、消費電力コールツリーを作成する。そして、消費電力コールツリー表示部１４２は、その消費電力コールツリーを表示する（Ｓ１７）。
【００７６】
次に、本実施形態の消費電力分析システム１の作用効果について説明する。消費電力分析システム１において、リソース消費割合算出部１１は、アプリケーションプログラムによって呼び出された各メソッドの実行履歴からなるトレースログと、メソッドの実行時における端末ＨＷ２２ごとのリソース消費量が記録されたリソースログと、を取得し、トレースログおよびリソースログに基づいて、メソッドごとに各端末ＨＷ２２に対するリソース消費割合を算出する。また、リソース消費電力算出部１２は、リソースログに基づいて端末ＨＷ２２ごとに消費電力を算出する。そして、メソッド消費電力算出部１３は、端末ＨＷ２２ごとの消費電力と、メソッドごとの各端末ＨＷ２２に対するリソース消費割合とに基づいて、メソッドごとの消費電力を算出する。
【００７７】
第一リソースログおよびトレースログは、いずれも端末のＯＳレベルから取得可能な、端末に依存しない情報である。また、第二リソースログは、ＡＰＩ又はアプリケーションプログラムから取得可能な、端末に依存しない情報である。このため、様々なハードウェアおよびアプリケーションプログラムに対してメソッド単位での消費電力を算出することが可能となる。
【００７８】
また、消費電力分析システム１において、リソースログは、端末２全体でのリソース消費量が記録された第一リソースログである。端末２によっては、メソッドが消費したリソース消費量を記録した第二リソースログを生成できないことがある。このような場合に、第一リソースログを用いることで、端末２全体および端末ＨＷ２２ごとのリソース消費量を取得することができる。
【００７９】
また、消費電力分析システム１において、リソース消費割合算出部１１は、トレースログに基づいて算出されたメソッドの実行回数、または、トレースログに基づいて算出されたメソッドのＣＰＵ時間の全体に占める割合を用いてメソッドごとのリソース消費割合を算出する。第一リソースログは実時間性を持って取得することができず、一定時間ごとのリソース消費量のみ取得できる。そこで、メソッドの実行回数と第一リソースログに記録されたリソース消費量とは比例関係にあると仮定すると、第一リソースログ（端末２全体のリソースログ）およびトレースログ（メソッドの実行回数）からメソッドごとのリソース消費量を推定することができる。
【００８０】
同様に、メソッドのＣＰＵ時間と第一リソースログに記録されたリソース消費量とは比例関係にあると仮定すると、第一リソースログおよびトレースログからメソッドごとのリソース消費量を推定することができる。このため、第二リソースログと同等の情報を推定することができ、メソッドごとのリソース消費割合を求めることができる。これにより同期間の全てのメソッドのリソース消費量、およびメソッド呼び出しごとのリソース消費量を推定できる。
【００８１】
また、消費電力分析システム１において、リソースログは、メソッドごとの各ハードウェアに対するリソース消費量が記録された第二リソースログである。このように、第二リソースログを用いることで、メソッドごとの各ハードウェアに対するリソース消費量を取得することができる。
【００８２】
また、消費電力分析システム１において、リソース消費割合算出部１１は、第二リソースログに記録されたメソッドごとの各ハードウェアに対するリソース消費量をハードウェアに応じた係数に基づいて補正する。第二リソースログは、アプリケーションプログラムが使用しているハードウェアのリソース消費量をすべて取得できない場合がある。このような場合に、第二リソースログに記憶されたメソッドごとの各ハードウェア対するリソース消費量に、ハードウェアに応じた係数を掛ける、又は足すなどすることで、メソッドごとに各ハードウェアに対するリソース消費量を補正できる。その結果、メソッド単位での消費電力を一層精度よく算出することが可能となる。
【００８３】
また、消費電力分析システム１において、表示部１４は、メソッドごとの消費電力を表示する。これにより、メソッドごとの消費電力を可視化することができ、開発者およびエンドユーザが消費電力を容易に把握することが可能となる。
【００８４】
また、消費電力分析システム１において、表示部１４の消費電力コールツリー表示部１４２は、トレースログに基づいてコールツリーを作成し、メソッドごとの消費電力をコールツリーに重畳して表示する。コールツリーの形式で消費電力を表示することで、メソッドの親子関係と共に消費電力を表示することができる。このため、消費電力についてボトルネックとなるメソッドの明確化が可能となる。
【００８５】
また、消費電力分析システム１において、消費電力コールツリー表示部１４２は、指定された期間におけるメソッドの消費電力を表示する。これにより、評価対象の時間帯を指定することができ、時間帯に応じた分析を行うことができる。
【００８６】
また、消費電力分析システム１において、表示部１４のグラフ表示部１４１は、所定の時間におけるハードウェアごとの消費電力を所定のグラフで表示する。ハードウェアごとの消費電力をグラフで表示することで、消費電力についてボトルネックとなっているハードウェアを明確化できる。
【００８７】
また、消費電力分析システム１において、表示部１４の消費電力コールツリー表示部１４２は、トレースログに基づいてコールツリーを作成し、メソッドごとの消費電力をコールツリーに重畳して表示する。そして、消費電力コールツリー表示部１４２は、グラフ表示部１４１によって表示されたグラフにおいて選択された部分に応じ、コールツリーを表示する。選択された部分のコールツリーを表示することで、ボトルネックとなるメソッドをより一層明確化できる。
【００８８】
グラフ表示部１４１は、例えば棒グラフ又は円グラフで表示を行う。所定の時間におけるハードウェアごとの消費電力を棒グラフ形式又は円グラフ形式で表示することで、消費電力についてボトルネックとなっているハードウェアを明確化できる。
【００８９】
また、消費電力分析システム１において、端末２は、無線通信端末である。無線通信端末上でアプリケーションプログラムを利用するエンドユーザにとって、アプリケーションプログラムの実行やデータ送受信等によってどの程度の電力が消費されるのかを認識するのは容易ではなく、バッテリ駆動の無線通信端末において、限られた電力を好適に利用するのが難しい。しかしながら、無線通信端末のリソースログやトレースログを利用することで、実際の無線通信端末上で実行されたアプリケーションプログラムのメソッドごとの消費電力を算出することが可能となる。このように、無線通信端末の使用時において、消費電力の評価結果を提供することができる。
【００９０】
なお、本発明に係る消費電力分析システムは本実施形態に記載したものに限定されない。本発明に係る消費電力分析システムは、各請求項に記載した要旨を変更しないように実施形態に係る消費電力分析システムを変形し、又は他のものに適用してもよい。上記実施形態では、「消費電力（Ｗ）」として説明を行っているが、「消費電力量（Ｗｈ）」としてもよい。
【００９１】
例えば、上記実施形態において端末２は、無線通信端末であるが、これに限定されない。端末２は、例えば仮想端末とすることもできる。この場合、消費電力分析システム１が動作する情報処理端末上で仮想的な端末ＨＷ２２を有する仮想端末をソフトウェアで再現してもよい。そして、仮想端末上で評価対象となるアプリケーションプログラムを実行し、そのリソースログやトレースログを利用してもよい。このため、実無線通信端末を用意しなくてもアプリケーションプログラムの消費電力を算出することが可能となる。このように、無線通信端末に搭載されるアプリケーションプログラムの開発時において、消費電力の評価結果を提供することができる。
【００９２】
また、上記実施形態において、第二リソースログは、仮想端末の低レベルＡＰＩから取得されるようにしてもよい。仮想端末が使用する低レベルＡＰＩに予め第二リソースログを出力できるように加工しておくことで、各メソッドが使用するリソース消費量を正確に算出できる。その結果、メソッドごとに算出される消費電力の精度を向上させることが可能となる。
【００９３】
また、上記実施形態において、リソース消費割合算出部１１は、補正リソース消費量Ｃｍｅｔｈｏｄ＿ｉ’を、上記式（２）に基づいて求めているが、これに限定されない。例えば、リソース消費割合算出部１１は、第二リソースログから取得したリソース消費量Ｃｍｅｔｈｏｄを係数βｒｅｓｏｕｃｅで除算する、または、リソース消費量Ｃｍｅｔｈｏｄから定数γｒｅｓｏｕｃｅを減算するなどして、補正リソース消費量Ｃｍｅｔｈｏｄ＿ｉ’を算出するようにしてもよい。
【００９４】
また、グラフ表示部１４１は、アプリケーションプログラムの稼動時間全体でのハードウェアごとの消費電力を表示するようにしてもよい。また、グラフ表示部１４１は、ユーザ等によって指定された期間について、ハードウェアごとの消費電力を表示するようにしてもよい。
【００９５】
また、消費電力コールツリー表示部１４２は、開発者およびエンドユーザ等によって指定された時間内で実行されたアプリケーションプログラムが使用したメソッドをコールツリーの形で表示するようにしてもよい。このようにすることで、時間帯に応じた分析が可能となる。
【００９６】
また、上記実施形態において、消費電力コールツリー表示部１４２は、一番末端のメソッドの消費電力のみを表示しているが、親メソッドの消費電力を表示してもよい。また、消費電力コールツリー表示部１４２は、消費電力コールツリーにおいて、所定のハードウェアの消費電力順にメソッドをソートして表示するようにしてもよい。消費電力の昇順に並び替えることで、アプリケーションプログラムの実行中にトータルとしてボトルネックとなるメソッドを発見することができる。
【００９７】
また、消費電力分析システム１を用いて、アプリケーション開発ツール（アプリケーション開発装置）を実装することもできる。図１５は、アプリケーション開発ツール１００の機能構成を示すブロック図である。図１５に示すように、アプリケーション開発ツール１００は、消費電力分析システム１と、入力部１１０（特許請求の範囲の「入力手段」に相当）と、ソースコード編集部１２０（特許請求の範囲の「ソースコード編集手段」に相当）と、ソースコード実行部１３０と、を含んで構成されている。入力部１１０は、ユーザ（例えば、開発者）からの入力を受け付ける入力手段として機能する。ソースコード編集部１２０は、入力部１１０によって受け付けられた入力に基づいて、アプリケーションプログラムのソースコードを編集するソースコード編集手段として機能する。ソースコード実行部１３０は、入力部１１０によって受け付けられた入力に基づいて、ソースコード編集部１２０によって編集されたソースコードを実行するソースコード実行手段として機能する。消費電力分析システム１は、ソースコード実行部１３０によって実行されたアプリケーションプログラムのソースコードに対してメソッドごとの消費電力を分析し、その結果を表示部１４に表示する。
【００９８】
このアプリケーション開発ツールによれば、開発者は、無線端末および仮想無線端末において消費電力を確認しながらアプリケーションプログラムの開発をすることができる。そして、ボトルネックとなるメソッドおよびハードウェアを削減することで省電力を実現することが可能となる。
【００９９】
また、上記実施形態では、アプリケーションプログラムがモジュールとしてメソッドを使用する場合について説明を行ったが、メソッドに代えて、サブルーチン、関数、クラスなどの他のモジュールとしてもよい。
【０１００】
また、上記実施形態は、消費電力分析システム１における各機能を実行するためのプログラムモジュールによって実現されてもよい。すなわち、リソース消費割合算出部１１に相当するリソース消費割合算出モジュール、リソース消費電力算出部１２に相当するリソース消費電力算出モジュール、メソッド消費電力算出部１３に相当するメソッド消費電力算出モジュールを備えた消費電力分析プログラムであって、サーバ装置などのコンピュータシステムに当該プログラムを読み込ませることにより、上述の消費電力分析システム１と同等の機能を実現することができる。上述の消費電力分析プログラムは、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤもしくはＲＯＭ等の記憶媒体または半導体メモリに格納されて提供される。また、上述の消費電力分析プログラムは、搬送波に重畳されたコンピュータデータ信号としてネットワークを介して提供されてもよい。
【符号の説明】
【０１０１】
１…消費電力分析システム、２…端末、１１…リソース消費割合算出部（リソース消費割合算出手段）、１２…リソース消費電力算出部（リソース消費電力算出手段）、１３…メソッド消費電力算出部（モジュール消費電力算出手段）、１４…表示部（表示手段）、１４１…グラフ表示部（グラフ表示手段）、１４２…消費電力コールツリー表示部（消費電力コールツリー表示手段）、２２…端末ＨＷ（ハードウェア）、１００…アプリケーション開発ツール、１１０…入力部（入力手段）、１２０…ソースコード編集部（ソースコード編集手段）、１３０…ソースコード実行部（ソースコード実行手段）
【図１】
0005787259.tif 000005
【図２】
0005787259.tif 000006
【図３】
0005787259.tif 000007
【図４】
0005787259.tif 000008
【図５】
0005787259.tif 000009
【図６】
0005787259.tif 000010
【図７】
0005787259.tif 000011
【図８】
0005787259.tif 000012
【図９】
0005787259.tif 000013
【図１０】
0005787259.tif 000014
【図１１】
0005787259.tif 000015
【図１２】
0005787259.tif 000016
【図１３】
0005787259.tif 000017
【図１４】
0005787259.tif 000018
【図１５】
0005787259.tif 000019