(57)【要約】【課題】複数の関数の呼出元プログラムの起動時間を短縮するための技術を提供する。【解決手段】複数の関数の実行状況を測定する測定部と、前記実行状況に基づいて前記関数を記憶領域内において再配置する再配置処理部と、を備える、情報処理装置が提供される。【選択図】図１
2013161392.tif 000002
【特許請求の範囲】
【請求項１】
複数の関数の実行状況を測定する測定部と、
前記実行状況に基づいて前記関数を記憶領域内において再配置する再配置処理部と、
を備える、情報処理装置。
【請求項２】
前記測定部は、前記実行状況として前記関数の実行回数を測定し、
前記再配置処理部は、前記実行回数に基づいて前記関数を前記記憶領域内において再配置する、
請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、前記関数の実行回数に基づいて前記関数の中から１または複数の再配置対象の関数を選択する選択部をさらに備え、
前記再配置処理部は、前記選択部により選択された１または複数の再配置対象の関数を再配置する、
請求項２に記載の情報処理装置。
【請求項４】
前記測定部は、前記実行状況として前記関数の実行順序を測定し、
前記再配置処理部は、前記実行順序に基づいて前記関数を前記記憶領域内において再配置する、
請求項１に記載の情報処理装置。
【請求項５】
前記情報処理装置は、前記関数の実行時刻に基づいて前記複数の関数の中から１または複数の再配置対象の関数を選択する選択部をさらに備え、
前記再配置処理部は、前記選択部により選択された１または複数の再配置対象の関数を再配置する、
請求項４に記載の情報処理装置。
【請求項６】
前記再配置処理部は、前記選択部により選択された１または複数の再配置対象の関数を、前記記憶領域内の単一のページまたは前記記憶領域内の連続する複数のページに収まるように再配置する、
請求項３に記載の情報処理装置。
【請求項７】
前記情報処理装置は、
前記複数の関数を前記記憶領域内において再配置するための条件を満たすか否かを判断する判断部をさらに備え、
前記再配置処理部は、前記判断部により前記再配置するための条件を満たすと判断された場合に、前記複数の関数を前記記憶領域内において再配置する、
請求項１に記載の情報処理装置。
【請求項８】
前記判断部は、前記複数の関数を呼び出すための呼出元プログラムの起動が初回である場合を、前記条件を満たす場合であると判断する、
請求項７に記載の情報処理装置。
【請求項９】
前記判断部は、前記複数の関数を呼び出すための呼出元プログラムによる呼び出し対象が変化した場合を、前記条件を満たす場合であると判断する、
請求項７に記載の情報処理装置。
【請求項１０】
前記判断部は、前記測定部による測定の手法に変化が生じた場合を、前記条件を満たす場合であると判断する、
請求項７に記載の情報処理装置。
【請求項１１】
前記判断部は、前記複数の関数のいずれかが更新された場合を、前記条件を満たす場合であると判断する、
請求項７に記載の情報処理装置。
【請求項１２】
前記判断部は、ユーザから再配置を行う旨の入力がなされた場合を、前記条件を満たす場合であると判断する、
請求項７に記載の情報処理装置。
【請求項１３】
前記測定部は、前記複数の関数を呼び出すための呼出元プログラムが起動された場合に前記関数の実行状況の測定を開始する、
請求項１に記載の情報処理装置。
【請求項１４】
前記測定部は、測定終了のための条件を満たした場合に前記関数の実行状況の測定を終了する、
請求項１に記載の情報処理装置。
【請求項１５】
前記測定部は、前記複数の関数を呼び出すための呼出元プログラムの起動時に行われる初期化処理が完了した場合に前記実行状況の測定を終了する、
請求項１４に記載の情報処理装置。
【請求項１６】
前記測定部は、前記複数の関数を呼び出すための呼出元プログラムの起動から所定時間が経過した場合に前記実行状況の測定を終了する、
請求項１４に記載の情報処理装置。
【請求項１７】
複数の関数の実行状況を測定することと、
前記実行状況に基づいて前記関数を記憶領域内において再配置することと、
を含む、情報処理方法。
【請求項１８】
コンピュータを、
複数の関数の実行状況を測定する測定部と、
前記実行状況に基づいて前記関数を記憶領域内において再配置する再配置処理部と、
を備える情報処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
コンピュータなどの情報処理装置は、呼出元プログラムの起動時に呼出元プログラムから呼び出される実行プログラムをストレージ装置から読み出し、読み出した実行プログラムをメモリ上に展開する。一般的に、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が提供するメモリ管理装置または仮想記憶装置においては、ページ単位（あるいは、ストレージ装置の記憶領域に存在する固定長の連続領域単位）で実行プログラムの読み出しが行われる。実行プログラムを効率よく読み出すための技術としては、様々な技術が開示されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２９３６０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、呼出元プログラムによって呼び出される複数の関数は、実行プログラム内の任意の位置に散在しているのが通例である。この場合、例えば、実行プログラムのサイズが大きい場合には、複数の関数が記憶領域内においてページ境界を跨って配置される可能性が高い。さらに、ページのサイズより小さいサイズの関数が複数のページにまたがり配置される可能性が高い。
【０００５】
この場合、呼出元プログラム起動されて複数の関数が実行される際に、実行される関数がより高速なＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのキャッシュメモリ上に存在せず、ページフォルトが多発する可能性が高い。その結果、より低速なストレージ装置からの関数の読み込みが必要となり、起動時間の低下を招いてしまう。
【０００６】
実行プログラムにおける複数の関数の配置は、開発環境における関数の結合処理にてなされるが、この配置において特定の関数群を記憶領域内の狭いアドレス範囲に収めるような結合処理はなされないのが一般的である。また、開発環境において特定の関数群を記憶領域内の狭いアドレス範囲に収めるような結合処理を行ったとしても、実行される関数は、ユーザからの入力情報や呼出元プログラムによって使用される設定情報などによって異なるため、開発環境における結合処理が有効であるとは限らない。
【０００７】
そこで、入力情報や設定情報に関わらず、複数の関数を記憶領域から読み出すために要する時間を短縮するための技術が提供されることが望まれる。また、かかる技術の提供により、複数の関数の呼出元プログラムの起動時間を短縮するための技術が提供されることが望まれる。
【課題を解決するための手段】
【０００８】
本開示によれば、複数の関数の実行状況を測定する測定部と、前記実行状況に基づいて前記関数を記憶領域内において再配置する再配置処理部と、を備える情報処理装置が提供される。
【０００９】
また、本開示によれば、複数の関数の実行状況を測定することと、前記実行状況に基づいて前記関数を記憶領域内において再配置することと、を含む情報処理方法が提供される。
【００１０】
また、本開示によれば、コンピュータを、複数の関数の実行状況を測定する測定部と、前記実行状況に基づいて前記関数を記憶領域内において再配置する再配置処理部と、を備える情報処理装置として機能させるためのプログラムが提供される。
【発明の効果】
【００１１】
以上説明したように本開示によれば、複数の関数の呼出元プログラムの起動時間を短縮することが可能である。
【図面の簡単な説明】
【００１２】
【図１】本開示の実施形態に係る情報処理装置の概要を示す図である。
【図２】第１の実施形態に係る情報処理装置の機能構成例を示すブロック図である。
【図３】第１の実施形態に係る情報処理装置が有する機能の一例を説明するための図である。
【図４】第１の実施形態に係る情報処理装置が有する機能の他の一例を説明するための図である。
【図５】第１の実施形態に係る情報処理装置が有する機能の他の一例を説明するための図である。
【図６】実行状況の測定開始時および測定終了時の例を説明するための図である。
【図７】第１の実施形態に係る情報処理装置の動作の流れを示すフローチャートである。
【図８】第２の実施形態に係る情報処理装置の機能構成例を示すブロック図である。
【図９】複数の関数を再配置するための条件を説明するための図である。
【図１０】条件の一例を説明するための図である。
【図１１】条件の他の一例を説明するための図である。
【図１２】第２の実施形態に係る情報処理装置の動作の流れを示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書および図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１４】
また、本明細書および図面において、実質的に同一の機能構成を有する複数の構成要素を、同一の符号の後に異なるアルファベットを付して区別する場合もある。ただし、実質的に同一の機能構成を有する複数の構成要素の各々を特に区別する必要がない場合、同一符号のみを付する。
【００１５】
また、以下に示す項目順序に従って当該「発明を実施するための形態」を説明する。
１．情報処理装置の概要
２．第１の実施形態
３．第２の実施形態
４．むすび
【００１６】
＜１．情報処理装置の概要＞
まず、本開示の実施形態に係る情報処理装置の概要について説明する。図１は、本開示の実施形態に係る情報処理装置の概要を示す図である。図１に示すように、情報処理装置が備えるプログラム実行部１１０は、複数の関数（図１に示した例では、関数Ａ、関数Ｂおよび関数Ｃ）を含む実行プログラムをストレージ装置２０から読み出し、読み出した実行プログラムを実行する。実行プログラムは、実行プログラムを呼び出すための呼出元プログラムの起動時にストレージ装置２０からプログラム実行部１１０により読み出されてメモリ上に展開される。ここで、一般的に、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が提供するファイルシステムにおいては、ページ単位（あるいは、ストレージ装置の記憶領域に存在する固定長の連続領域単位）で実行プログラムの読み出しが行われる。
【００１７】
したがって、複数の関数の再配置を行わずにストレージ装置２０から複数の関数を読み出す場合には、より多くのページの読み込みが必要となってしまう。図１に示した例では、関数ＡがページＰ１に存在し、関数ＢがページＰ２に存在し、関数ＣがページＰ３に存在しているため、これらの再配置を行わずにストレージ装置２０から関数Ａ、関数Ｂおよび関数Ｃを読み出すと３ページの読み込みが必要となってしまう。
【００１８】
したがって、複数の関数がストレージ装置２０の記憶領域内において単一のページまたは記憶領域内の連続する複数のページに収まるように再配置されていれば、プログラム実行部１１０による複数の関数の読み出し時に、読み込みページ数が低減される。図１に示した例では、関数Ａ、関数Ｂおよび関数Ｃが単一のページＰ１に収まるように再配置されているため、ストレージ装置２０から関数Ａ、関数Ｂおよび関数Ｃを読み出すと１ページの読み込みが必要となる。
【００１９】
しかし、実行される関数は、ユーザからの入力情報や呼出元プログラムによって使用される設定情報などによって異なるため、開発環境における関数の結合処理が有効であるとは限らない。そこで、本実施形態に係る情報処理装置１０によれば、入力情報や設定情報に関わらず、複数の関数をストレージ装置２０の記憶領域から読み出すために要する時間を短縮するための技術が提供される。その結果、複数の関数の呼出元プログラムの起動時間が短縮されることが期待される。
【００２０】
以上、本開示の実施形態に係る情報処理装置の概要について説明した。続いて、かかる概要を踏まえ、本開示の第１の実施形態について説明する。まず、本開示の第１の実施形態に係る情報処理装置の機能構成例について説明する。
【００２１】
＜２．第１の実施形態＞
図２は、本開示の第１の実施形態に係る情報処理装置１０Ａの機能構成例を示すブロック図である。図２に示したように、情報処理装置１０Ａは、制御部１００Ａを備える。また、制御部１００Ａは、プログラム実行部１１０、測定部１３０、選択部１４０および再配置処理部１５０を備える。
【００２２】
制御部１００Ａは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）またはＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）などのプロセッサ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）に相当する。制御部１００Ａは、ストレージ装置２０または他の記憶媒体に記憶されるプログラムを実行することにより、制御部１００Ａが有する様々な機能を発揮する。このプログラムには、複数の関数を含む実行プログラム、複数の関数を呼び出すための呼出元プログラムなどが含まれる。
【００２３】
ストレージ装置２０は、半導体メモリまたはハードディスクなどの記憶媒体を用いて、制御部１００Ａによる処理のためのプログラムおよびデータを記憶する。例えば、ストレージ装置２０は、プログラム実行部１１０により実行される実行プログラムを記憶することができる。また、例えば、ストレージ装置２０は、プログラム実行部１１０により実行される呼出元プログラムを記憶することもできる。また、例えば、ストレージ装置２０は、呼出元プログラムによって使用される設定情報を記憶することもできる。図２に示した例では、ストレージ装置２０と情報処理装置１０とは別体に構成されているが、ストレージ装置２０は、情報処理装置１０に組み込まれていてもよい。
【００２４】
入力部３０は、ユーザからの操作を受け付ける機能を有する。入力部３０は、ユーザからの操作をユーザからの入力情報として制御部１００Ａに出力する。入力情報は制御部１００Ａにより用いられ、例えば、呼出元プログラムの実行に用いられる。また、例えば、入力部３０は、ユーザから呼出元プログラムの起動を開始する操作を受け付けることもできる。また、例えば、入力部３０は、ユーザから呼出元プログラムの実行を終了する操作の入力を受け付けることもできる。
【００２５】
プログラム実行部１１０は、呼出元プログラムを実行する。呼出元プログラムの種類は、特に限定されないため、ＯＳであってもよいし、アプリケーションであってもよい。プログラム実行部１１０は、呼出元プログラムを起動すると、呼出元プログラムによって呼び出される複数の関数を、ストレージ装置２０からページ単位で読み出す。呼出元プログラムの起動は、例えば、ユーザから呼出元プログラムの起動を開始する操作が入力部３０により受け付けられた場合に開始される。
【００２６】
測定部１３０は、複数の関数それぞれの実行状況を測定する。複数の関数それぞれの実行状況は特に限定されないが、例えば、複数の関数の各々が実行されたか否かを示す情報であってもよいし、複数の関数それぞれの実行回数であってもよいし、複数の関数それぞれの実行順序であってもよいし、複数の関数それぞれの実行時刻であってもよい。複数の関数は、起動された呼出元プログラムから呼び出されることによって実行される。測定部１３０による実行状況測定の開始および終了のタイミングについては、後に説明する。
【００２７】
複数の関数それぞれの実行状況の測定を実現するためには、例えば、呼び出し元の関数のアドレスを記録する機能を有するアドレス記録関数が用意されており、アドレス記録関数を呼び出すためのコードが複数の関数の各々に埋め込まれていればよい。そうすれば、測定部１３０は、アドレスが記録された関数が実行されたことを把握することができる。アドレスの記録先は、例えば、ストレージ装置２０であってもよいし、他の装置であってもよい。
【００２８】
呼び出し元の関数のアドレスは、例えば、アドレス記録関数を呼び出すためのコードの引数に設定される。また、例えば、呼び出し元の関数のアドレスは、呼び出し元の関数のアドレスの先頭アドレスであってもよいし、コードが埋め込まれた位置を示すアドレスであってもよい。測定部１３０は、このように記録されたアドレスから複数の関数それぞれの実行状況を測定できる。アドレスや実行状況は、圧縮された状態で記録されてもよい。
【００２９】
選択部１４０は、複数の関数それぞれの実行状況に基づいて複数の関数の中から１または複数の再配置対象の関数を選択する。例えば、選択部１４０は、測定部１３０により複数の関数それぞれの実行回数が測定された場合には、複数の関数それぞれの実行回数に基づいて複数の関数の中から１または複数の再配置対象の関数を選択してもよい。また、例えば、選択部１４０は、測定部１３０により複数の関数それぞれの実行順序が測定された場合には、複数の関数それぞれの実行順序に基づいて複数の関数の中から１または複数の再配置対象の関数を選択してもよい。
【００３０】
また、選択部１４０は、測定部１３０により複数の関数それぞれの実行時刻が測定された場合には、複数の関数それぞれの実行時刻に基づいて複数の関数の中から１または複数の再配置対象の関数を選択してもよい。なお、図２に示した例では、制御部１００Ａに選択部１４０が備えられているが、選択部１４０は制御部１００Ａに備えられていなくてもよい。
【００３１】
再配置処理部１５０は、複数の関数それぞれの実行状況に基づいて複数の関数をストレージ装置２０の記憶領域内において再配置する。例えば、再配置処理部１５０は、選択部１４０により選択された１または複数の再配置対象の関数を、ストレージ装置２０の記憶領域内の単一のページまたはストレージ装置２０の記憶領域内の連続する複数のページに収まるように再配置する。また、再配置処理部１５０は、選択部１４０によって１または複数の再配置対象の関数が選択された場合には、選択部１４０によって選択された１または複数の再配置対象の関数を再配置してもよい。
【００３２】
再配置処理部１５０は、複数の関数をストレージ装置２０の記憶領域内において再配置するに際して、複数の関数が収まるページ内に生じるスペースがより小さくなるように複数の関数を再配置してもよい。また、再配置処理部１５０は、複数の関数をストレージ装置２０の記憶領域内において再配置するに際して、複数のページに跨って収まる関数が生じないように複数の関数を再配置してもよい。
【００３３】
出力部４０は、制御部１００Ａによる制御に従って各種の情報を出力する機能を有する。各種の情報は、表示装置により出力されてもよいし、送信装置により外部装置に送信されてもよい。例えば、出力部４０は、プログラム実行部１１０による呼出元プログラムの実行結果を出力する機能を有する。例えば、出力部４０は、呼出元プログラムの起動を開始する操作をユーザに行わせるための情報、呼出元プログラムの実行を終了する操作をユーザに行わせるための情報などを出力してもよい。
【００３４】
以上、本開示の第１の実施形態に係る情報処理装置１０Ａの機能構成例について説明した。続いて、本開示の第１の実施形態に係る制御部１００Ａが有する機能の詳細について説明する。
【００３５】
図３は、第１の実施形態に係る情報処理装置１０Ａが有する機能の一例を説明するための図である。図３には、複数の関数それぞれの実行状況として、複数の関数それぞれの実行回数が測定される場合について示されている。図３に示すように、呼出元プログラムによって複数の関数（関数Ａ、関数Ｂ、関数Ｃおよび関数Ｄ）が呼び出される場合を想定する。また、複数の関数の各々には、アドレス記録関数を呼び出すためのコードが「ｅｎｔｅｒ」として埋め込まれている。また、関数の終了を示すコード「ｅｎｄ」も複数の各々に埋め込まれている。
【００３６】
ストレージ装置２０の記憶領域内には、複数の関数（関数Ａ、関数Ｂ、関数Ｃおよび関数Ｄ）が記憶されているが、再配置前には、これらの複数の関数は単一のページに収まっておらず、かつ、連続する複数のページにも収まっていない。かかる状況において、測定部１３０によって複数の関数それぞれの実行回数が測定される。実行回数の測定が開始されるタイミングについては、後に説明する。
【００３７】
上記したように、選択部１４０は、測定部１３０により複数の関数それぞれの実行回数が測定された場合には、複数の関数それぞれの実行回数に基づいて複数の関数の中から１または複数の再配置対象の関数を選択してもよい。例えば、選択部１４０は、実行回数が所定の回数よりも大きい関数を１または複数の再配置対象の関数として選択してもよい。図３に示した例では、所定の回数が「１」である場合、選択部１４０は、実行回数が「１」よりも大きい関数（関数Ａ、関数Ｂおよび関数Ｃ）を１または複数の再配置対象の関数として選択している。
【００３８】
複数の関数それぞれの実行回数の測定が終了すると、再配置処理部１５０は、複数の関数それぞれの実行回数に基づいて複数の関数をストレージ装置２０の記憶領域内において再配置する。例えば、再配置処理部１５０は、選択部１４０により選択された１または複数の再配置対象の関数を、ストレージ装置２０の記憶領域内の単一のページまたはストレージ装置２０の記憶領域内の連続する複数のページに収まるように再配置する。実行回数の測定が終了されるタイミングについては、後に説明する。
【００３９】
図３に示した例では、選択部１４０によって関数Ａ、関数Ｂおよび関数Ｃが再配置対象の関数として選択されているため、関数Ａ、関数Ｂおよび関数Ｃを、ストレージ装置２０の記憶領域内の単一のページに収まるように再配置している。また、図３に示すように、再配置の結果として関数が移動された場合には、移動先の関数の位置が配置場所（例えば、ストレージ装置２０の記憶領域内のアドレス）としてストレージ装置２０に記録される。
【００４０】
例えば、再配置処理部１５０は、実行回数が多い順に複数の関数をストレージ装置２０の記憶領域内の単一のページまたはストレージ装置２０の記憶領域内の連続する複数のページに収まるように再配置してもよい。図３に示した例では、実行回数が多い順（関数Ａ、関数Ｂおよび関数Ｃの順）に関数Ａ、関数Ｂおよび関数Ｃをストレージ装置２０の記憶領域内の単一のページに収まるように再配置している。このように再配置すれば、呼出元プログラムの起動時間がより短縮されることが期待される。
【００４１】
図３に示した例では、関数Ａ、関数Ｂおよび関数Ｃが単一のページＰ１に収まるように再配置されているため、ストレージ装置２０から関数Ａ、関数Ｂおよび関数Ｃを読み出すと１ページの読み込みが必要となる。このような再配置によれば、入力情報や設定情報に関わらず、関数Ａ、関数Ｂおよび関数Ｃをストレージ装置２０の記憶領域から読み出すために要する時間を短縮することができる。その結果、関数Ａ、関数Ｂおよび関数Ｃの呼出元プログラムの起動時間が短縮される。
【００４２】
図４は、第１の実施形態に係る情報処理装置１０Ａが有する機能の他の一例を説明するための図である。図４には、複数の関数それぞれの実行状況として、複数の関数それぞれの実行順序が測定される場合について示されている。図４に示すように、呼出元プログラムによって複数の関数（関数Ａ、関数Ｂ、関数Ｃおよび関数Ｄ）が呼び出される場合を想定する。また、複数の関数の各々には、アドレス記録関数を呼び出すためのコードが「ｅｎｔｅｒ」として埋め込まれている。また、関数の終了を示すコード「ｅｎｄ」も複数の各々に埋め込まれている。
【００４３】
ストレージ装置２０の記憶領域内には、複数の関数（関数Ａ、関数Ｂ、関数Ｃおよび関数Ｄ）が記憶されているが、再配置前には、これらの複数の関数は単一のページに収まっておらず、かつ、連続する複数のページにも収まっていない。かかる状況において、測定部１３０によって複数の関数それぞれの実行順序が測定される。実行順序の測定が開始されるタイミングについては、後に説明する。
【００４４】
上記したように、選択部１４０は、測定部１３０により複数の関数それぞれの実行順序が測定された場合には、複数の関数それぞれの実行順序に基づいて複数の関数の中から１または複数の再配置対象の関数を選択してもよい。例えば、選択部１４０は、実行順序が所定の順序よりも後の関数を１または複数の再配置対象の関数として選択してもよい。図４に示した例では、所定の順序が「１」である場合、選択部１４０は、実行順序が「１」よりも後の関数（関数Ａ、関数Ｂおよび関数Ｃ）を１または複数の再配置対象の関数として選択している。
【００４５】
複数の関数それぞれの実行順序の測定が終了すると、再配置処理部１５０は、複数の関数それぞれの実行回数に基づいて複数の関数をストレージ装置２０の記憶領域内において再配置する。例えば、再配置処理部１５０は、選択部１４０により選択された１または複数の再配置対象の関数を、ストレージ装置２０の記憶領域内の単一のページまたはストレージ装置２０の記憶領域内の連続する複数のページに収まるように再配置する。実行順序の測定が終了されるタイミングについては、後に説明する。
【００４６】
図４に示した例では、選択部１４０によって関数Ａ、関数Ｂおよび関数Ｃが再配置対象の関数として選択されているため、関数Ａ、関数Ｂおよび関数Ｃを、ストレージ装置２０の記憶領域内の単一のページに収まるように再配置している。また、図４に示すように、再配置の結果として関数が移動された場合には、移動先の関数の位置が配置場所（例えば、ストレージ装置２０の記憶領域内のアドレス）としてストレージ装置２０に記録される。
【００４７】
例えば、再配置処理部１５０は、実行順序に従って複数の関数をストレージ装置２０の記憶領域内の単一のページまたはストレージ装置２０の記憶領域内の連続する複数のページに収まるように再配置してもよい。図４に示した例では、実行順序に従って（関数Ａ、関数Ｂおよび関数Ｃの順に）関数Ａ、関数Ｂおよび関数Ｃをストレージ装置２０の記憶領域内の単一のページに収まるように再配置している。このように再配置すれば、呼出元プログラムの起動時間がより短縮されることが期待される。
【００４８】
図４に示した例では、関数Ａ、関数Ｂおよび関数Ｃが単一のページＰ１に収まるように再配置されているため、ストレージ装置２０から関数Ａ、関数Ｂおよび関数Ｃを読み出すと１ページの読み込みが必要となる。このような再配置によれば、入力情報や設定情報に関わらず、関数Ａ、関数Ｂおよび関数Ｃをストレージ装置２０の記憶領域から読み出すために要する時間を短縮することができる。その結果、関数Ａ、関数Ｂおよび関数Ｃの呼出元プログラムの起動時間が短縮される。
【００４９】
図５は、第１の実施形態に係る情報処理装置１０Ａが有する機能の他の一例を説明するための図である。図５には、複数の関数それぞれの実行状況として、複数の関数それぞれの実行時刻が測定される場合について示されている。図５に示すように、呼出元プログラムによって複数の関数（関数Ａ、関数Ｂ、関数Ｃおよび関数Ｄ）が呼び出される場合を想定する。また、複数の関数の各々には、アドレス記録関数を呼び出すためのコードが「ｅｎｔｅｒ」として埋め込まれている。また、関数の終了を示すコード「ｅｎｄ」も複数の各々に埋め込まれている。
【００５０】
ストレージ装置２０の記憶領域内には、複数の関数（関数Ａ、関数Ｂ、関数Ｃおよび関数Ｄ）が記憶されているが、再配置前には、これらの複数の関数は単一のページに収まっておらず、かつ、連続する複数のページにも収まっていない。かかる状況において、測定部１３０によって複数の関数それぞれの実行時刻が測定される。実行時刻の測定が開始されるタイミングについては、後に説明する。
【００５１】
上記したように、選択部１４０は、測定部１３０により複数の関数それぞれの実行時刻が測定された場合には、複数の関数それぞれの実行時刻に基づいて複数の関数の中から１または複数の再配置対象の関数を選択してもよい。例えば、選択部１４０は、実行時刻が所定の時刻よりも遅い関数を１または複数の再配置対象の関数として選択してもよい。図５に示した例では、所定の時刻が「１１時４１分」である場合、選択部１４０は、実行時刻が「１１時４１分」よりも遅い関数（関数Ａ、関数Ｂおよび関数Ｃ）を１または複数の再配置対象の関数として選択している。所定の時刻は、現在時刻を基準として所定時間前であってもよい。
【００５２】
複数の関数それぞれの実行順序の測定が終了すると、再配置処理部１５０は、複数の関数それぞれの実行時刻に基づいて複数の関数をストレージ装置２０の記憶領域内において再配置する。例えば、再配置処理部１５０は、選択部１４０により選択された１または複数の再配置対象の関数を、ストレージ装置２０の記憶領域内の単一のページまたはストレージ装置２０の記憶領域内の連続する複数のページに収まるように再配置する。実行時刻の測定が終了されるタイミングについては、後に説明する。
【００５３】
図５に示した例では、選択部１４０によって関数Ａ、関数Ｂおよび関数Ｃが再配置対象の関数として選択されているため、関数Ａ、関数Ｂおよび関数Ｃを、ストレージ装置２０の記憶領域内の単一のページに収まるように再配置している。また、図５に示すように、再配置の結果として関数が移動された場合には、移動先の関数の位置が配置場所（例えば、ストレージ装置２０の記憶領域内のアドレス）としてストレージ装置２０に記録される。
【００５４】
例えば、再配置処理部１５０は、実行時刻に従って複数の関数をストレージ装置２０の記憶領域内の単一のページまたはストレージ装置２０の記憶領域内の連続する複数のページに収まるように再配置してもよい。図５に示した例では、実行時刻の遅い順（関数Ａ、関数Ｂおよび関数Ｃの順）に関数Ａ、関数Ｂおよび関数Ｃをストレージ装置２０の記憶領域内の単一のページに収まるように再配置している。このように再配置すれば、呼出元プログラムの起動時間がより短縮されることが期待される。
【００５５】
図５に示した例では、関数Ａ、関数Ｂおよび関数Ｃが単一のページＰ１に収まるように再配置されているため、ストレージ装置２０から関数Ａ、関数Ｂおよび関数Ｃを読み出すと１ページの読み込みが必要となる。このような再配置によれば、入力情報や設定情報に関わらず、関数Ａ、関数Ｂおよび関数Ｃをストレージ装置２０の記憶領域から読み出すために要する時間を短縮することができる。その結果、関数Ａ、関数Ｂおよび関数Ｃの呼出元プログラムの起動時間が短縮される。
【００５６】
以上、本開示の第１の実施形態に係る情報処理装置１０Ａが有する機能の例について説明した。なお、測定部１３０による実行状況の測定開始のタイミングおよび測定終了のタイミングは、適宜に変更することが可能である。以下では、測定部１３０による実行状況の測定開始のタイミングおよび測定終了のタイミングの例について説明する。
【００５７】
図６は、本開示の第１の実施形態に係る情報処理装置１０Ａの測定部１３０による実行状況の測定開始時および測定終了時の例を説明するための図である。例えば、図６に示すように、測定部１３０は、複数の関数を呼び出すための呼出元プログラムが起動された場合に複数の関数それぞれの実行状況の測定を開始すればよい。呼出元プログラムが起動された後に、呼出元プログラムから複数の関数が呼び出されるからである。
【００５８】
また、測定部１３０は、測定終了のための条件を満たした場合に複数の関数それぞれの実行状況の測定を終了すればよい。例えば、図６に示したように、測定部１３０は、複数の関数を呼び出すための呼出元プログラムの起動時に行われる初期化処理が完了した場合に複数の関数それぞれの実行状況の測定を終了してもよい。例えば、測定部１３０は、初期化処理完了を示す信号が通知された場合に初期化処理が完了したと判断してもよい。
【００５９】
あるいは、測定部１３０は、複数の関数を呼び出すための呼出元プログラムの起動から所定時間が経過した場合に複数の関数それぞれの実行状況の測定を終了してもよい。また、測定部１３０は、出力部４０によって画面が表示されている場合には、表示されている画面の切り替えがなされた場合に複数の関数それぞれの実行状況の測定を終了してもよい。このようなタイミングで測定が終了されれば、測定終了前に呼出元プログラムから複数の関数が呼び出される機会が確保されることが予想されるからである。
【００６０】
以上、測定部１３０による実行状況の測定開始のタイミングおよび測定終了のタイミングの例について説明した。以下では、本開示の第１の実施形態に係る情報処理装置１０Ａの動作の流れの例について説明する。
【００６１】
図７は、本開示の第１の実施形態に係る情報処理装置１０Ａの動作の流れを示すフローチャートである。なお、図７に示す動作は、情報処理装置１０Ａの動作の一例を示したに過ぎないため、情報処理装置１０Ａの動作は、図７に示した動作の流れに限定されない。
【００６２】
図７に示すように、まず、測定部１３０は、プログラム実行部１１０によって呼出元プログラムが起動されたか否かを判断する（Ｓ１１）。測定部１３０は、プログラム実行部１１０によって呼出元プログラムが起動されない場合には（Ｓ１１で「Ｎｏ」）、Ｓ１１に戻る。測定部１３０は、プログラム実行部１１０によって呼出元プログラムが起動されると（Ｓ１１で「Ｙｅｓ」）、複数の関数の実行状況を測定する（Ｓ１２）。
【００６３】
続いて、測定部１３０は、実行状況の測定終了のための条件を満たしたか否かを判断する（Ｓ１３）。測定部１３０は、実行状況の測定終了のための条件を満たしていない場合には（Ｓ１３で「Ｎｏ」）、Ｓ１３に戻る。測定部１３０は、実行状況の測定終了のための条件を満たした場合には（Ｓ１３で「Ｙｅｓ」）、実行状況の測定を終了する（Ｓ１４）。
【００６４】
続いて、選択部１４０は、選択部１４０は、複数の関数それぞれの実行状況に基づいて複数の関数の中から１または複数の再配置対象の関数を選択する（Ｓ１５）。再配置処理部１５０は、選択部１４０により選択された１または複数の再配置対象の関数を再配置する（Ｓ１６）。このような再配置によれば、入力情報や設定情報に関わらず、複数の関数をストレージ装置２０の記憶領域から読み出すために要する時間を短縮することができる。その結果、複数の関数の呼出元プログラムの起動時間が短縮される。
【００６５】
以上、本開示の第１の実施形態について説明した。続いて、本開示の第２の実施形態について説明する。
【００６６】
＜３．第２の実施形態＞
図８は、本開示の第２の実施形態に係る情報処理装置１０Ｂの機能構成例を示すブロック図である。図８に示したように、情報処理装置１０Ｂは、制御部１００Ｂを備える。また、制御部１００Ｂは、プログラム実行部１１０、判断部１２０、測定部１３０、選択部１４０および再配置処理部１５０を備える。本開示の第２の実施形態に係る情報処理装置１０Ｂは、本開示の第１の実施形態に係る情報処理装置１０Ａと比較して、判断部１２０を有している点が主に異なっている。したがって、以下では、判断部１２０が有する機能について主に説明する。
【００６７】
複数の関数をストレージ装置２０の記憶領域内で再配置を行った場合には、再配置の処理のために情報処理装置１０Ｂに負荷が掛かる。したがって、再配置を行うか否かは状況に応じて判断されるのがよい。そこで、判断部１２０は、複数の関数をストレージ装置２０の記憶領域内において再配置するための条件を満たすか否かを判断する。そして、再配置処理部１５０は、判断部１２０により再配置するための条件を満たすと判断された場合に、複数の関数を記憶領域内において再配置するのがよい。一方、例えば、再配置処理部１５０は、判断部１２０により再配置するための条件を満たさないと判断された場合には、複数の関数を記憶領域内において再配置しないようにすればよい。
【００６８】
再配置するための条件としては様々な条件が想定される。以下では、再配置するための条件について説明する。図９は、複数の関数を再配置するための条件を説明するための図である。例えば、再配置するための条件１に示すように、判断部１２０は、呼出元プログラムの起動が初回である場合を、再配置するための条件を満たす場合であると判断してもよい。呼出元プログラムの起動が初回である場合には、複数の関数がストレージ装置２０の記憶領域内において単一のページまたは記憶領域内の連続する複数のページに収まっていない可能性があるからである。
【００６９】
また、例えば、再配置するための条件２に示すように、判断部１２０は、複数の関数を呼び出すための呼出元プログラムによる呼び出し対象が変化した場合を、再配置するための条件を満たす場合であると判断してもよい。再配置されるべき関数が代わってしまっている可能性があるからである。このような呼び出し対象の変化は、例えば、呼出元プログラム自体が変化した場合や、呼出元プログラムに使用される設定情報が変化した場合などに生じることが想定される。この例について、図１０を参照しながらさらに詳細に説明する。図１０は、再配置するための条件の一例（再配置するための条件２）を説明するための図である。
【００７０】
図１０に示した例では、呼び出し対象が、関数Ａ、関数Ｂ、関数Ｃおよび関数Ｄから、関数Ａ、関数Ｂ、関数Ｅおよび関数Ｄに変化している。例えば、判断部１２０は、このような呼び出し対象の変化を検出した場合に再配置するための条件を満たしたと判断してもよい。なお、図１０に示した例では、選択部１４０が、呼び出し対象（関数Ａ、関数Ｂ、関数Ｅおよび関数Ｄ）から関数Ａ、関数Ｂおよび関数Ｅを選択し、再配置処理部１５０が、選択部１４０によって選択された関数Ａ、関数Ｂおよび関数Ｅを再配置している。しかし、再配置処理部１５０は、呼出元プログラムから新たに呼び出されるようになった関数（関数Ｅ）のみを再配置してもよい。
【００７１】
図９に戻って説明を続ける。また、例えば、再配置するための条件３に示すように、判断部１２０は、複数の関数の実行状況の測定方法に変化が生じた場合を、再配置するための条件を満たす場合であると判断してもよい。実行状況を再度測定すれば前回の実行状況と異なる実行状況が測定される可能性があるからである。この例について、図１１を参照しながらさらに詳細に説明する。図１１は、再配置するための条件の他の一例（再配置するための条件３）を説明するための図である。
【００７２】
図１１に示した例では、呼び出し対象である複数の関数（関数Ａ、関数Ｂ、関数Ｃおよび関数Ｄ）のうち、関数Ａに埋め込まれているコードの位置が変化している。例えば、判断部１２０は、このような測定手法の変化を検出した場合に再配置するための条件を満たしたと判断してもよい。なお、測定手法の変化は、関数に埋め込まれているコードの位置の変化に限定されず、例えば、呼び出し対象の関数の一部または全部に生じた何らかの変化であってもよい。また、測定手法の変化は、実行状況の測定開始時が変化した場合であってもよいし、実行状況の測定終了時が変化した場合であってもよいし、他の変化であってもよい。
【００７３】
図９に戻って説明を続ける。また、例えば、再配置するための条件４に示すように、判断部１２０は、複数の関数のいずれかが更新された場合を、再配置するための条件を満たす場合であると判断してもよい。実行状況を再度測定すれば前回の実行状況と異なる実行状況が測定される可能性があるからである。複数の関数のいずれかの更新は、例えば、複数の関数を含む実行プログラムのバージョンアップが行われる場合になされる。また、例えば、再配置するための条件５に示すように、判断部１２０は、ユーザから再配置を行う旨の入力がなされた場合を、再配置するための条件を満たす場合であると判断してもよい。
【００７４】
以上、判断部１２０が有する機能について主について説明した。以下では、本開示の第２の実施形態に係る情報処理装置１０Ｂの動作の流れの例について説明する。
【００７５】
図１２は、本開示の第２の実施形態に係る情報処理装置１０Ｂの動作の流れを示すフローチャートである。なお、図１２に示す動作は、情報処理装置１０Ｂの動作の一例を示したに過ぎないため、情報処理装置１０Ｂの動作は、図１２に示した動作の流れに限定されない。
【００７６】
図１２に示すように、まず、判断部１２０は、呼出元プログラムによって呼び出される複数の関数を再配置するための条件を満たしたか否かを判断する（Ｓ２１）。判断部１２０は、再配置するための条件を満たしていないと判断した場合には（Ｓ２１で「Ｎｏ」）、再配置を行わないが、再配置するための条件を満たしていると判断した場合には（Ｓ２１で「Ｙｅｓ」）、Ｓ２２に進む。
【００７７】
続いて、測定部１３０は、プログラム実行部１１０によって呼出元プログラムが起動されたか否かを判定する（Ｓ２２）。測定部１３０は、プログラム実行部１１０によって呼出元プログラムが起動されない場合には（Ｓ２２で「Ｎｏ」）、Ｓ２２に戻る。測定部１３０は、プログラム実行部１１０によって呼出元プログラムが起動されると（Ｓ２２で「Ｙｅｓ」）、複数の関数の実行状況を測定する（Ｓ２３）。
【００７８】
続いて、測定部１３０は、実行状況の測定終了のための条件を満たしたか否かを判定する（Ｓ２４）。測定部１３０は、実行状況の測定終了のための条件を満たしていない場合には（Ｓ２４で「Ｎｏ」）、Ｓ２４に戻る。測定部１３０は、実行状況の測定終了のための条件を満たした場合には（Ｓ２４で「Ｙｅｓ」）、実行状況の測定を終了する（Ｓ２５）。
【００７９】
続いて、選択部１４０は、選択部１４０は、複数の関数それぞれの実行状況に基づいて複数の関数の中から１または複数の再配置対象の関数を選択する（Ｓ２６）。再配置処理部１５０は、選択部１４０により選択された１または複数の再配置対象の関数を再配置する（Ｓ２７）。このような判断を行うようにすれば、第２の実施形態に係る情報処理装置１０Ｂは、第１の実施形態に係る情報処理装置１０Ａが奏する効果と同様の効果を奏するとともに、再配置を行うか否かを適切に判断することが可能となる。
【００８０】
以上、本開示の第２の実施形態について説明した。
【００８１】
＜４．むすび＞
以上説明したように、本開示の第１の実施形態によれば、複数の関数それぞれの実行状況を測定する測定部１３０と、複数の関数それぞれの実行状況に基づいて複数の関数を記憶領域内において再配置する再配置処理部１５０と、を備える、情報処理装置１０Ａが提供される。
【００８２】
かかる構成によれば、ユーザからの入力情報や呼出元プログラムによって使用される設定情報に関わらず、複数の関数を記憶領域から読み出すために要する時間を短縮することが可能となる。その結果、複数の関数の呼出元プログラムの起動時間が短縮されることが期待される。また、本開示の第１の実施形態によれば、実行プログラムを生成するためのプログラムを変更する必要がないという効果をさらに奏する。さらに、本開示の第１の実施形態に係る情報処理装置１０Ａは、実行プログラムが置換された場合に対しても適用することが可能である。
【００８３】
また、本開示の第２の実施形態によれば、複数の関数を記憶領域内において再配置するための条件を満たすか否かを判断する判断部をさらに備える、情報処理装置１０Ｂが提供される。かかる構成によれば、第１の実施形態に係る情報処理装置１０Ａが奏する効果と同様の効果を奏するとともに、複数の関数の再配置を行うか否かを適切に判断することが可能となる。
【００８４】
なお、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【００８５】
また、本明細書の情報処理装置１０の動作における各ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はない。例えば、情報処理装置１０の動作における各ステップは、フローチャートとして記載した順序と異なる順序で処理されても、並列的に処理されてもよい。
【００８６】
また、情報処理装置１０に内蔵されるＣＰＵ、ＲＯＭおよびＲＡＭなどのハードウェアを、上述した情報処理装置１０の構成と同等の機能を発揮させるためのコンピュータプログラムも作成可能である。また、該コンピュータプログラムを記憶させた記憶媒体も提供される。
【００８７】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）
複数の関数の実行状況を測定する測定部と、
前記実行状況に基づいて前記関数を記憶領域内において再配置する再配置処理部と、
を備える、情報処理装置。
（２）
前記測定部は、前記実行状況として前記関数の実行回数を測定し、
前記再配置処理部は、前記実行回数に基づいて前記関数を前記記憶領域内において再配置する、
前記（１）に記載の情報処理装置。
（３）
前記情報処理装置は、前記関数の実行回数に基づいて前記関数の中から１または複数の再配置対象の関数を選択する選択部をさらに備え、
前記再配置処理部は、前記選択部により選択された１または複数の再配置対象の関数を再配置する、
前記（２）に記載の情報処理装置。
（４）
前記測定部は、前記実行状況として前記関数の実行順序を測定し、
前記再配置処理部は、前記実行順序に基づいて前記関数を前記記憶領域内において再配置する、
前記（１）に記載の情報処理装置。
（５）
前記情報処理装置は、前記関数の実行時刻に基づいて前記複数の関数の中から１または複数の再配置対象の関数を選択する選択部をさらに備え、
前記再配置処理部は、前記選択部により選択された１または複数の再配置対象の関数を再配置する、
前記（４）に記載の情報処理装置。
（６）
前記再配置処理部は、前記選択部により選択された１または複数の再配置対象の関数を、前記記憶領域内の単一のページまたは前記記憶領域内の連続する複数のページに収まるように再配置する、
前記（３）または前記（５）に記載の情報処理装置。
（７）
前記情報処理装置は、
前記複数の関数を前記記憶領域内において再配置するための条件を満たすか否かを判断する判断部をさらに備え、
前記再配置処理部は、前記判断部により前記再配置するための条件を満たすと判断された場合に、前記複数の関数を前記記憶領域内において再配置する、
前記（１）〜（６）のいずれか一項に記載の情報処理装置。
（８）
前記判断部は、前記複数の関数を呼び出すための呼出元プログラムの起動が初回である場合を、前記条件を満たす場合であると判断する、
前記（７）に記載の情報処理装置。
（９）
前記判断部は、前記複数の関数を呼び出すための呼出元プログラムによる呼び出し対象が変化した場合を、前記条件を満たす場合であると判断する、
前記（７）に記載の情報処理装置。
（１０）
前記判断部は、前記測定部による測定の手法に変化が生じた場合を、前記条件を満たす場合であると判断する、
前記（７）に記載の情報処理装置。
（１１）
前記判断部は、前記複数の関数のいずれかが更新された場合を、前記条件を満たす場合であると判断する、
前記（７）に記載の情報処理装置。
（１２）
前記判断部は、ユーザから再配置を行う旨の入力がなされた場合を、前記条件を満たす場合であると判断する、
前記（７）に記載の情報処理装置。
（１３）
前記測定部は、前記複数の関数を呼び出すための呼出元プログラムが起動された場合に前記関数の実行状況の測定を開始する、
前記（１）〜（１２）のいずれか一項に記載の情報処理装置。
（１４）
前記測定部は、測定終了のための条件を満たした場合に前記関数の実行状況の測定を終了する、
前記（１）〜（１３）のいずれか一項に記載の情報処理装置。
（１５）
前記測定部は、前記複数の関数を呼び出すための呼出元プログラムの起動時に行われる初期化処理が完了した場合に前記実行状況の測定を終了する、
前記（１４）に記載の情報処理装置。
（１６）
前記測定部は、前記複数の関数を呼び出すための呼出元プログラムの起動から所定時間が経過した場合に前記実行状況の測定を終了する、
前記（１４）に記載の情報処理装置。
（１７）
複数の関数の実行状況を測定することと、
前記実行状況に基づいて前記関数を記憶領域内において再配置することと、
を含む、情報処理方法。
（１８）
コンピュータを、
複数の関数の実行状況を測定する測定部と、
前記実行状況に基づいて前記関数を記憶領域内において再配置する再配置処理部と、
を備える情報処理装置として機能させるためのプログラム。
【符号の説明】
【００８８】
１０（１０Ａ，１０Ｂ）  情報処理装置
２０    ストレージ装置
３０    入力部
４０    出力部
１００（１００Ａ，１００Ｂ）  制御部
１１０  プログラム実行部
１２０  判断部
１３０  測定部
１４０  選択部
１５０  再配置処理部
Ａ〜Ｅ  関数
Ｐ１〜Ｐ３    ページ
【図１】
2013161392.tif 000003
【図２】
2013161392.tif 000004
【図３】
2013161392.tif 000005
【図４】
2013161392.tif 000006
【図５】
2013161392.tif 000007
【図６】
2013161392.tif 000008
【図７】
2013161392.tif 000009
【図８】
2013161392.tif 000010
【図９】
2013161392.tif 000011
【図１０】
2013161392.tif 000012
【図１１】
2013161392.tif 000013
【図１２】
2013161392.tif 000014