JP2014222384A - 関数実行時間計測装置、関数実行時間計測方法、関数実行時間計測プログラム - Google Patents

関数実行時間計測装置、関数実行時間計測方法、関数実行時間計測プログラム Download PDF

Info

Publication number
JP2014222384A
JP2014222384A JP2013101152A JP2013101152A JP2014222384A JP 2014222384 A JP2014222384 A JP 2014222384A JP 2013101152 A JP2013101152 A JP 2013101152A JP 2013101152 A JP2013101152 A JP 2013101152A JP 2014222384 A JP2014222384 A JP 2014222384A
Authority
JP
Japan
Prior art keywords
function
execution
execution time
storage area
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2013101152A
Other languages
English (en)
Inventor
篤史 辻
Atsushi Tsuji
篤史 辻
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2013101152A priority Critical patent/JP2014222384A/ja
Publication of JP2014222384A publication Critical patent/JP2014222384A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】動作状態が特定の条件を満たす場合にのみ、プログラム内の特定の関数の実行時間を測定することを可能とする関数実行時間計測装置等を提供する。
【解決手段】関数実行時間計測装置1は、プロセッサで動作しているプロセスの動作状態を先入れ後出し(スタック)方式で記憶するプロセス別記憶領域1bと、予め備えられた主記憶装置に対象プログラムを読み込むプログラムローダ2と、対象プログラム内で計測対象関数の開始点および指定関数の開始点に各々、割り込み処理を発生させる第1および第2のフックを挿入する動的パッチ手段3と、第2のフックによる割り込み処理が発生した場合に、第1のフックによる割り込み処理の発生時刻から計測対象関数の実行終了までの経過時間を測定し、これを出力する実行時間計測手段4とを有する。
【選択図】図1

Description

本発明は関数実行時間計測装置、関数実行時間計測方法、関数実行時間計測プログラムに関し、特に動作状態が特定の条件を満たす場合にのみ当該プログラム内の特定の関数の実行時間を測定する関数実行時間計測装置等に関する。
コンピュータプログラミング(オペレーティングシステムおよびアプリケーションのいずれであっても)においては、当該プログラムの中のどの部分の実行に時間がかかっているかを特定することが、高速に、かつ安定して実行することが可能なプログラムを作成する上では重要である。特に、当該プログラムの実行中にエラーが発生した際に、当該プログラムに含まれる関数ごとの実行時間を計測し、これによって性能に影響を与える遅延箇所を特定することは重要である。
そのために、一般的には時間計測用のポイントをソースプログラム内に作成するなどのような手法が多く採られている。しかしながら、そのような時間計測用のポイントは、最終的に完成するプログラムの動作では特に必要とはされない。そのため、ソースプログラムを実行形式ファイルにコンパイルする段階で、それらのポイントを除外して再コンパイルするという繁雑な作業が必要となる。
図12は、後述の特許文献1に記載された既存のプログラム実行時間測定の技術について示す説明図である。この技術では、動作中のプログラム命令が記憶された主記憶装置で、特定のアドレスの記憶内容を書き替えて割り込み命令を発生させ、その割り込み命令の発生点の間で時間を測定している。この手法を動的フック手法といい、また割り込みを発生させる命令をフックという。この手法で、プログラム内部の任意の地点で実行時間の測定が可能となる。
図12に記載された例では、アドレス「A3」に記憶された命令「B3」を「B’3」に、アドレス「An−3」に記憶された命令「Bn−3」を「B’n−3」に各々書き替えており、これによってアドレス「A3」と「An−3」とで各々割り込み命令を発生させ、その発生点の間の時間を測定している。他のアドレスにおいても、同じ方法で測定対象とすることができる。
これに関連して、他には次のような技術資料がある。特許文献2には、関数の実行終了時にエラーが発生した場合にトレースデータの収集などを行うことが可能であるというデバッグシステムが記載されている。特許文献3には、対象プログラムに時間測定用の監視コードを追加して、これによってプログラムの実行時間を測定するという技術が記載されている。
特許文献4には、各関数にセッションIDなどを対応づけて、関数ごとの性能データを収集するという技術が記載されている。特許文献5には、プログラム中にいくつでもイベントポイントを設定できるというデバッグ装置が記載されている。特許文献6、および特許文献7には、設定されたプログラム中の特定のアドレス間の実行時間を計測する計測方法が記載されている。
特開平03−225440号公報 特開2000−089977号公報 特開2004−258728号公報 特開2009−064124号公報 特開2009−116682号公報 特開平02−230436号公報 特開平06−161834号公報
図12に示した特許文献1に記載の技術を利用すれば、コンピュータプログラム内の任意の部分について実行時間を測定することが可能となる。しかしながら、この技術は単に「プログラム内の特定の区間の実行時間の測定」が可能であるというだけである。コンピュータプログラムの同じ部分であっても、動作状態などの条件に応じて実行時間は変わりうるものであるが、「特定の条件を満たす場合にのみ、その区間の実行時間を測定する」ことは、この技術ではできない。
特に、コンピュータプログラム内には、エラーが発生した場合にそのエラーの種類に応じて実行されるエラー処理用の関数が作られることが普通である。信頼性の高いプログラムを作成する上では、そのエラー処理が正しく迅速に行われているか否かを把握することが必要である。そのためには、特定のエラーが発生した場合の関数実行時間の測定が必要となる。
しかしながら、これを可能とする技術は、前述の特許文献1には記載されていない。残る特許文献2〜7にも、関数ごとの実行時間を測定可能な技術は含まれているが、特定の条件を満たす場合にその関数の実行時間を測定するという技術は記載されていない。
本発明の目的は、コンピュータプログラムの動作状態が特定の条件を満たす場合にのみ、当該プログラム内の特定の関数の実行時間を測定することを可能とする関数実行時間計測装置、関数実行時間計測方法、および関数実行時間計測プログラムを提供することにある。
上記目的を達成するため、本発明に係る関数実行時間計測装置は、計測対象関数および指定関数を含む対象プログラムを実行するプロセッサを有し、計測対象関数の実行中に指定関数が実行された場合に当該計測対象関数の実行時間を測定する関数実行時間計測装置であって、プロセッサで動作しているプロセスの動作状態を先入れ後出し(スタック)方式で記憶するプロセス別記憶領域と、予め備えられた主記憶装置に対象プログラムを読み込むプログラムローダと、対象プログラム内で計測対象関数の開始点および指定関数の開始点に各々、割り込み処理を発生させる第1および第2のフックを挿入する動的パッチ手段と、第2のフックによる割り込み処理が発生した場合に、第1のフックによる割り込み処理の発生時刻から計測対象関数の実行終了までの経過時間を測定し、これを出力する実行時間計測手段とを有すること、を特徴とする。
上記目的を達成するため、本発明に係る関数実行時間計測方法は、計測対象関数および指定関数を含む対象プログラムを実行するプロセッサと、プロセッサで動作しているプロセスを先入れ後出し(スタック)方式で記憶するプロセス別記憶領域とを有し、計測対象関数の実行中に指定関数が実行された場合に当該計測対象関数の実行時間を測定する関数実行時間計測装置にあって、予め備えられた主記憶装置にプログラムローダが対象プログラムを読み込み、対象プログラム内で計測対象関数の開始点および指定関数の開始点に各々、割り込み処理を発生させる第1および第2のフックを動的パッチ手段が挿入し、第2のフックによる割り込み処理が発生した場合に、実行時間計測手段が第1のフックによる割り込み処理の発生時刻から計測対象関数の実行終了までの経過時間を測定し、これを出力すること、を特徴とする。
上記目的を達成するため、本発明に係る関数実行時間計測プログラムは、計測対象関数および指定関数を含む対象プログラムを実行するプロセッサと、プロセッサで動作しているプロセスを先入れ後出し(スタック)方式で記憶するプロセス別記憶領域とを有し、計測対象関数の実行中に指定関数が実行された場合に当該計測対象関数の実行時間を測定する関数実行時間計測装置にあって、関数実行時間計測装置が備えるプロセッサに、予め備えられた主記憶装置に対象プログラムを読み込む手順、対象プログラム内で計測対象関数の開始点および指定関数の開始点に各々、割り込み処理を発生させる第1および第2のフックを挿入する手順、および第2のフックによる割り込み処理が発生した場合に、実行時間計測手段が第1のフックによる割り込み処理の発生時刻から計測対象関数の実行終了までの経過時間を測定し、これを出力する手順を実行させること、を特徴とする。
本発明は、上記した通り、計測対象関数の開始点および指定関数の開始点に各々第1および第2のフックを挿入し、第2のフックによる割り込み処理が発生した場合に計測対象関数の実行時間を測定するように構成したので、単純な判断のみで特定の条件を満たしたか否かを検知できる。これによって、コンピュータプログラムの動作状態が特定の条件を満たす場合にのみ、当該プログラム内の特定の関数の実行時間を測定することが可能であるという、優れた特徴を持つ関数実行時間計測装置、関数実行時間計測方法、および関数実行時間計測プログラムを提供することができる。
本発明の基本形態に係る関数実行時間計測装置の構成について示す説明図である。 本発明の第1の実施形態に係る関数実行時間計測装置の構成について示す説明図である。 図2で示した関数実行時間計測装置で、対象プログラム領域に読み込まれる対象プログラムで関数実行時間の計測を行う条件の一例について示す説明図である。 図2で示した関数実行時間計測装置で、動的パッチ手段が対象プログラム領域の特定の部分にフックを挿入する動作について示すフローチャートである。 図2で示した関数実行時間計測装置で、実行時間計測手段が計測対象関数の動作時間を測定する動作について示すフローチャートである。 図5のステップS201、203、206〜207の各々の処理が行われる時の、プロセス別記憶領域のスタックの状態について示す説明図である。図6(a)は図5のステップS201を、図6(b)はステップS203を、図6(c)はステップS206〜207を各々示す。 本発明の第2の実施形態に係る関数実行時間計測装置構成について示す説明図である。 図7で示した関数実行時間計測装置で、動的パッチ手段が対象プログラム領域の特定の部分にフックを挿入する動作について示すフローチャートである。 図7で示した関数実行時間計測装置で、実行時間計測手段が計測対象関数の動作時間を測定する動作について示すフローチャートである。 図9のステップS401、403〜404、407の各々の処理が行われる時の、プロセス別記憶領域103のスタックの状態について示す説明図である。図10(a)は図9のステップS401を、図10(b)はステップS403〜404を、図10(c)はステップS407を各々示す。 本発明の第3の実施形態に係る関数実行時間計測装置の構成について示す説明図である。 特許文献1に記載された既存のプログラム実行時間測定の技術について示す説明図である。
(基本形態)
以下、本発明の基本形態の構成について添付図1に基づいて説明する。
基本形態に係る関数実行時間計測装置1は、計測対象関数および指定関数を含む対象プログラムを実行するプロセッサ1aを有し、計測対象関数の実行中に指定関数が実行された場合に当該計測対象関数の実行時間を測定する関数実行時間計測装置であって、プロセッサで動作しているプロセスの動作状態を先入れ後出し(スタック)方式で記憶するプロセス別記憶領域1bと、予め備えられた主記憶装置に対象プログラムを読み込むプログラムローダ2と、対象プログラム内で計測対象関数の開始点および指定関数の開始点に各々、割り込み処理を発生させる第1および第2のフックを挿入する動的パッチ手段3と、第2のフックによる割り込み処理が発生した場合に、第1のフックによる割り込み処理の発生時刻から計測対象関数の実行終了までの経過時間を測定し、これを出力する実行時間計測手段4とを有する。
これによって、この関数実行時間計測装置1は、動作状態が特定の条件を満たす場合にのみ、当該プログラム内の特定の関数の実行時間を測定することが可能なものとなる。
これら各部/各手段のより詳細な構成は、次の実施形態として説明する。
(第1の実施形態)
続いて、本発明の第1の実施形態の構成について添付図2に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係る関数実行時間計測装置10は、計測対象関数および指定関数を含む対象プログラムを実行するプロセッサ11を有し、計測対象関数の実行中に指定関数が実行された場合に当該計測対象関数の実行時間を測定する関数実行時間計測装置であり、プロセッサで動作しているプロセスの動作状態を先入れ後出し(スタック)方式で記憶するプロセス別記憶領域103と、予め備えられた主記憶装置に対象プログラムを読み込むプログラムローダ14と、対象プログラム内で計測対象関数の開始点および指定関数の開始点に各々、割り込み処理を発生させる第1および第2のフックを挿入する動的パッチ手段16と、第2のフックによる割り込み処理が発生した場合に、第1のフックによる割り込み処理の発生時刻から計測対象関数の実行終了までの経過時間を測定し、これを出力する実行時間計測手段22(実行時間計測プログラム210)とを有する。
また、プロセス別記憶領域103に、指定関数が実行されたか否かを示す二値データを記憶する指定処理実行フラグ104を併設すると共に、実行時間計測手段22が、第2のフックによる割り込み処理が発生した場合に指定処理実行フラグの値を指定関数が実行されたことを示す値に変更する機能を備える。
そして、実行時間計測手段22が、第1のフックによる割り込み処理が発生した場合に、その時点の時刻をプロセス別記憶領域に記憶する機能と、第2のフックによる割り込み処理が発生し、かつ指定処理実行フラグの値が指定関数が実行されたことを示す値である場合に、プロセス別記憶領域に記憶された時刻から計測対象関数の実行終了までの経過時間を測定する機能とを有する。
以上の構成を備えることによって、この関数実行時間計測装置10は、コンピュータプログラム(対象プログラム200)の動作状態が特定の条件を満たす場合にのみ、当該プログラム内の特定の関数の実行時間を測定することが可能なものとなる。
以下、これをより詳細に説明する。
図2は、本発明の第1の実施形態に係る関数実行時間計測装置10の構成について示す説明図である。関数実行時間計測装置10は、コンピュータ装置としての基本的な構成を備える。即ち、関数実行時間計測装置10は、コンピュータプログラムを実行する主体であるプロセッサ11と、動作中のプログラムやデータを記憶する主記憶手段12と、対象プログラムやデータを記録するハードディスクなどの外部記憶手段13を備える。
関数実行時間計測装置10はさらに、外部記憶手段13から対象プログラムを読み取って主記憶手段12に記憶させるプログラムローダ14と、対象プログラム中の指定の関数の実行時間を記録する実行時間記録手段15と、主記憶手段12に記憶されている対象プログラムの特定の部分にフック(割り込み発生命令)を挿入する動的パッチ手段16とを備える。
プログラムローダ14および動的パッチ手段16は、プロセッサ11で実行されるコンピュータプログラムとして構成してもよいし、プロセッサ11とは別個のハードウェアとして構成してもよい。また、実行時間記録手段15は、外部記憶手段13と同一としてもよい。
主記憶手段12には、関数実行時間の計測対象となる対象プログラム200が記憶される対象プログラム領域101、実行時間計測プログラム210が記憶される計測プログラム領域102、動作中の各プロセスをスタック(先入れ後出し)方式で記憶するプロセス別記憶領域103、さらに関数実行時間を計測すべき条件を満たしているか否かを示す二値データを記録する指定処理実行フラグ104を備えている。プロセス別記憶領域103としては、たとえばスレッドローカルストレージやスタック領域の一部を利用することができる。指定処理実行フラグ104は、プロセス別記憶領域103内に含まれていてもよいし、別の領域でもよい。
そしてプロセッサ11は、対象プログラム200を実行する対象プログラム実行手段21、および実行時間計測プログラム210を実行して関数実行時間の計測を行う実行時間計測手段22として機能する。実行時間計測手段22は、プロセス別記憶領域103に記憶されている対象プログラムの一部を書き替えるスタック書き替え機能22aを含む。
図3は、図2で示した関数実行時間計測装置10で、対象プログラム領域101に読み込まれる対象プログラム200で関数実行時間の計測を行う条件の一例について示す説明図である。対象プログラム200には、関数実行時間の計測対象となる計測対象関数201と、それとは別個の指定関数202と指定外関数203とが含まれている。
本実施形態では図3(a)に示す「計測対象関数201の実行中に指定関数202が呼び出されて実行された場合」を、関数実行時間の計測対象とする。その場合、計測対象関数201の実行開始から実行終了までがその計測対象となる。計測対象関数201から指定関数202が呼び出されて実行されている間の時間も、その計測対象に含まれる。
逆に、図3(b)に示す「計測対象関数201の実行中に指定関数202が実行されなかった場合」、たとえば指定外関数203が呼び出されて実行されたのみの場合は、関数実行時間の計測を行わないものとする。
典型的には、計測対象関数201はエラー処理用関数、指定関数202および指定外関数203はその中で発生したエラーの種類に応じて呼び出される関数である。この場合、「計測対象関数201の実行中に指定関数202が呼び出されて実行された場合」という条件は「対象プログラム200の実行中に特定の種類のエラーが発生した場合」を意味する。しかしながら、本実施形態はこれ以外の条件に対しても適用可能であることは言うまでもない。
図4は、図2で示した関数実行時間計測装置10で、動的パッチ手段16が対象プログラム領域101の特定の部分にフックを挿入する動作について示すフローチャートである。プログラムローダ14が対象プログラム200を外部記憶手段13から読み込んで主記憶手段12の対象プログラム領域101に記憶させると、動的パッチ手段16はまず、対象プログラム200内の計測対象関数201が開始される際に実行時間計測プログラム210の後述のステップS201を実行させる第1のフック204aを計測対象関数201に挿入する(ステップS101)。
これに引き続いて動的パッチ手段16は、指定関数202が実行される際に後述のステップS203を実行させる第2のフック204bを指定関数202に挿入する(ステップS102)。以上で動的パッチ手段16による処理は終了する。
図3に戻って、図3(a)に示した計測対象関数201から指定関数202が呼び出されて実行される際には、第1のフック204aと第2のフック204bとでつごう2回のフック処理が発生することとなる。これに対して図3(b)に示した計測対象関数201から指定外関数203が呼び出されて実行されるのみの場合には、第1のフック204aによって1回のフック処理が発生するのみである。
図5は、図2で示した関数実行時間計測装置10で、実行時間計測手段22が計測対象関数201の動作時間を測定する動作について示すフローチャートである。
前述の第1のフック204aによるフック処理に反応して動作を開始した実行時間計測手段22のスタック書き替え機能22aは、プロセス別記憶領域103のスタックに、現在時刻と実行時間計測後処理(後述のステップS206以降)のアドレスとを追加し、指定処理実行フラグ104の値を「0」(指定関数202が未実行)とする(ステップS201)。
ステップS201の処理が完了したら、実行時間計測手段22は、計測対象関数201の処理を指定関数202に到達するまで行わせる(ステップS202)。指定関数202に到達すると第2のフック204bによるフック処理が発生するので、これに対応して指定処理実行フラグ104の値を「1」(指定関数202が実行済)とする(ステップS203)。そして計測対象関数201の残りの処理を行わせる(ステップS204)。
計測対象関数201の実行が終了すると、ステップS201で書き替えたアドレスに処理がジャンプして実行時間計測後処理が開始される(ステップS205)。ここで実行時間計測手段22は、指定処理実行フラグ104の値について判断する(ステップS206)。
指定処理実行フラグ104の値が「0」であれば、特に何もせずに計測対象関数201の処理は終了となる。指定処理実行フラグ104の値が「1」であれば、ステップS201で記録した時刻と現在時刻との差分(これが即ちここで求めようとしている関数実行時間である)を算出して、これを実行時間記録手段15に記録し(ステップS207)、計測対象関数201の処理はこれで終了となる。
図6は、図5のステップS201、203、206〜207の各々の処理が行われる時の、プロセス別記憶領域103のスタックの状態について示す説明図である。図6(a)は図5のステップS201を、図6(b)はステップS203を、図6(c)はステップS206〜207を各々示す。
計測対象関数201が呼び出された時点では、プロセス別記憶領域103のスタックにはその計測対象関数201の実行終了時の戻りアドレス103aが記録されている。ステップS201の処理では、図6(a)に示す通り、このスタックに現在時刻(即ち計測対象関数201の実行開始時刻103b)と、ステップS206以降の処理のアドレス(即ち実行時間計測後処理アドレス103c)とを記録する。また指定処理実行フラグ104の値は「0」である。
図6(b)に示す通り、指定関数202に到達した時点では、計測対象関数201の処理に伴うデータなどがプロセス別記憶領域103のスタックに記憶されるが、この時点で指定処理実行フラグ104の値は「1」となる。
そして図6(c)に示す通り、図6(a)で記録された実行時間計測後処理アドレス103cからの処理が開始された時点で指定処理実行フラグ104の値が「1」であれば、現在時刻とスタックに記憶された実行開始時刻103bとの間の差分を算出して実行時間記録手段15に記録し、そして戻りアドレス103aに処理を戻す。指定処理実行フラグ104の値が「0」であれば、そのまま戻りアドレス103aに処理を戻す。
(実施形態の全体的な動作)
次に、上記の実施形態の全体的な動作について説明する。
本実施形態に係る関数実行時間計測方法は、計測対象関数および指定関数を含む対象プログラムを実行するプロセッサと、プロセッサで動作しているプロセスを先入れ後出し(スタック)方式で記憶するプロセス別記憶領域とを有し、計測対象関数の実行中に指定関数が実行された場合に当該計測対象関数の実行時間を測定する関数実行時間計測装置にあって、予め備えられた主記憶装置にプログラムローダが対象プログラムを読み込み、対象プログラム内で計測対象関数の開始点および指定関数の開始点に各々、割り込み処理を発生させる第1および第2のフックを動的パッチ手段が挿入し(図4・ステップS101〜102)、第2のフックによる割り込み処理が発生した場合に、実行時間計測手段が第1のフックによる割り込み処理の発生時刻から計測対象関数の実行終了までの経過時間を測定し、これを出力する(図5・ステップS203〜207)。
また、プロセス別記憶領域に、指定関数が実行されたか否かを示す二値データを記憶する指定処理実行フラグを併設すると共に、第2のフックによる割り込み処理が発生した場合に、実行時間計測手段が指定処理実行フラグの値を指定関数が実行されたことを示す値に変更する(図5・ステップS203)。
そして、第1のフックによる割り込み処理が発生した場合に、実行時間計測手段がその時点の時刻をプロセス別記憶領域に記憶し(図5・ステップS201)、第2のフックによる割り込み処理が発生し、かつ指定処理実行フラグの値が指定関数が実行されたことを示す値である場合に、実行時間計測手段がプロセス別記憶領域に記憶された時刻から計測対象関数の実行終了までの経過時間を測定する(図5・ステップS206〜207)。
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行する関数実行時間計測装置10の備えるプロセッサ11に実行させるようにしてもよい。本プログラムは、非一時的な記録媒体、例えば、DVD、CD、フラッシュメモリ等に記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
この動作により、本実施形態は以下のような効果を奏する。
本実施形態によれば、指定処理実行フラグ104の値を0から1に変更するという簡単な動作、およびその値が1であるか否かという簡単な判断に基づいて指定関数202が実行されたか否かを判断して計測対象関数201の実行時間を測定することが可能となる。同時に、この処理に伴って発生するオーバーヘッド(遅延時間)は少なくて済む。
たとえば、前述のように計測対象関数201はエラー処理用関数、指定関数202および指定外関数203はその中で発生したエラーの種類に応じて呼び出される関数とすれば、「計測対象関数201の実行中に指定関数202が呼び出されて実行された場合」という条件は「対象プログラム200の実行中に特定の種類のエラーが発生した場合」を意味する。従って、本実施形態は対象プログラム200の実行中のエラー処理に要する実行時間を把握することに対して、特に有用である。
(第2の実施形態)
本発明の第2の実施形態は、プロセス別記憶領域103に、計測対象関数の実行終了後にプロセッサによる処理を戻す戻りアドレスを記憶する戻りアドレス格納領域404と、時刻を記憶する時刻格納領域405とを併設すると共に、実行時間計測手段322が、第1のフックによる割り込み処理が発生した場合に、プロセス別記憶領域に記憶された戻りアドレスを戻りアドレス格納領域に記憶し、その時点の時刻を時刻格納領域に記憶する機能と、第2のフックによる割り込み処理が発生した場合に、プロセス別記憶領域に記憶された戻りアドレスと戻りアドレス格納領域に記憶された戻りアドレスが一致するか否かを判断し、一致すれば時刻格納領域に記憶された時刻から計測対象関数の実行終了までの経過時間を測定する機能とを有する構成とした。
この構成によっても第1の実施形態と同一の効果が得られることに加えて、計測処理によって発生するオーバーヘッド(遅延時間)をさらに少なく済ませることができる。
以下、これをより詳しく説明する。
図7は、本発明の第2の実施形態に係る関数実行時間計測装置310の構成について示す説明図である。関数実行時間計測装置310は、第1の実施形態に係る関数実行時間計測装置10と同一の構成を多く含むので、同一のものについては同一の呼称と参照番号で呼ぶことにし、ここでは原則として第1の実施形態からの変更点のみについて説明することにする。
関数実行時間計測装置310は、ハードウェアとしては第1の実施形態に係る関数実行時間計測装置10と同一であるが、主記憶手段12に記憶される内容がまず異なる。即ち、対象プログラム領域101、計測プログラム領域102、プロセス別記憶領域103については第1の実施形態と同一であるが、指定処理実行フラグ104は省略され、後述の戻りアドレス格納領域404、および時刻格納領域405を新たに備えている。
そしてプロセッサ11は、対象プログラム200を実行する計測対象プログラム実行手段21、および第1の実施形態とは別の実行時間計測プログラム510を実行して関数実行時間の計測を行う実行時間計測手段322として機能する。実行時間計測手段322は、プロセス別記憶領域103に記憶されている対象プログラムの一部を書き替えるスタック書き替え機能322aを含む。
図8は、図7で示した関数実行時間計測装置310で、動的パッチ手段16が対象プログラム領域101の特定の部分にフックを挿入する動作について示すフローチャートである。プログラムローダ14が対象プログラム200を外部記憶手段13から読み込んで主記憶手段12の対象プログラム領域101に記憶させると、動的パッチ手段16はまず、対象プログラム200内の計測対象関数201が開始される際に実行時間計測プログラム210の後述のステップS401を実行させる第1のフック204aを計測対象関数201に挿入する(ステップS301)。
これに引き続いて動的パッチ手段16は、指定関数202が実行される際に後述のステップS403を実行させる第2のフック204bを指定関数202に挿入する(ステップS302)。以上で動的パッチ手段16による処理は終了する。この処理は、図4に示した第1の実施形態の動作と同一である。また、対象プログラム領域101に読み込まれる対象プログラム200で関数実行時間の計測を行う条件についても、図3で説明した第1の実施形態の場合と同一とする。
図9は、図7で示した関数実行時間計測装置310で、実行時間計測手段322が計測対象関数201の動作時間を測定する動作について示すフローチャートである。
前述の第1のフック204aによるフック処理に反応して動作を開始した実行時間計測プログラム510は、プロセス別記憶領域103のスタックに記憶されている戻りアドレス103aを戻りアドレス格納領域404に記憶して、時刻格納領域405には現在時刻(即ち計測対象関数201の実行開始時刻)を記憶する(ステップS401)。
ステップS401の処理が完了したら、実行時間計測手段322は、計測対象関数201の処理を指定関数202に到達するまで行わせる(ステップS402)。指定関数202に到達すると第2のフック204bによるフック処理が発生するので、実行時間計測手段322はプロセス別記憶領域103のコールスタックを順繰りに辿って、そこに記録されている戻りアドレスが戻りアドレス格納領域404に記憶されている内容と一致するか否かについて判断する(ステップS403)。
コールスタックに記録されている戻りアドレスが戻りアドレス格納領域404と一致しなければ、後述の戻りアドレスを実行時間計測後処理のアドレスに変更する処理は行われないので、実行時間計測手段322はそのまま計測対象関数201の残りの処理を行わせて(ステップS406)処理を終了する。
コールスタックに記録されている戻りアドレスが戻りアドレス格納領域404と一致すれば、まず実行時間計測手段322のスタック書き替え機能322aがコールスタック内の戻りアドレスを実行時間計測後処理(後述のステップS407)のアドレスに書き替える(ステップS404)。ここで第3のフックが、計測対象関数201の終了時点に挿入されたこととなる。そして計測対象関数201の残りの処理を行わせる(ステップS405)。即ち、本実施形態では、計測対象となる条件を満たす場合、合計3回のフック処理が発生することになる。
実行時間計測手段322は、これに反応して、ステップS401で時刻格納領域405に記録した時刻と現在時刻との差分(これが即ちここで求めようとしている関数実行時間である)を算出して、これを実行時間記録手段15に記録して(ステップS407)処理を終了する。
図10は、図9のステップS401、403〜404、407の各々の処理が行われる時の、プロセス別記憶領域103のスタックの状態について示す説明図である。図10(a)は図9のステップS401を、図10(b)はステップS403〜404を、図10(c)はステップS407を各々示す。
計測対象関数201が呼び出された時点では、プロセス別記憶領域103のスタックにはその計測対象関数201の実行終了時の戻りアドレス103aが記録されている。ステップS401の処理では、図10(a)に示す通り、この戻りアドレス103aを戻りアドレス格納領域404に記憶し、現在時刻を時刻格納領域405に記憶する。
図10(b)に示す通り、一般的なプログラムではスタックフレームの位置を保持するためフレームポインタを利用しているので、このフレームポインタを順繰りに辿れば、ステップS403のコールスタックを順繰りに辿る処理が実現できる。
そして図10(c)に示す通り、指定関数202が実行されていれば計測対象関数201の戻り時に実行時間計測後処理(ステップS407)が実行されるが、指定関数202が実行されていなければその処理は実行されない。即ち、この計測処理によって発生するオーバーヘッド(遅延時間)をさらに少なく済ませることができる。
(第3の実施形態)
本発明の第3の実施形態は、前述の第1および第2の実施形態におけるプログラムローダおよび動的パッチ手段に替えてOSカーネル700内にカーネルモジュールロード手段701およびカーネル動的パッチ手段702を備える構成とし、さらに実行時間計測プログラムもカーネルモジュールの一つとして動作する形態とした。
これによって、第1および第2の実施形態が一般的なコンピュータプログラムの関数実行時間を計測するものであるのに対して、オペレーティングシステム(基本ソフト)の一部であるカーネルの関数実行時間を計測することが可能であるという効果を得ることができる。
以下、これをより詳しく説明する。
図11は、本発明の第3の実施形態に係る関数実行時間計測装置610の構成について示す説明図である。関数実行時間計測装置610は、第1〜2の実施形態に係る関数実行時間計測装置10および310と同一の構成を多く含むので、同一のものについては同一の呼称と参照番号で呼ぶことにし、ここでは原則として第1〜2の実施形態からの変更点のみについて説明することにする。
第1〜2の実施形態に係る関数実行時間計測装置10および310は、一般的なコンピュータプログラムの関数実行時間を計測するものであるが、本実施形態の関数実行時間計測装置610は、オペレーティングシステム(基本ソフト)の基本的機能を実現するプログラムの一部であるカーネルの関数実行時間を計測するものである。
このため、プロセッサ11、主記憶手段12、および外部記憶手段13は第1〜2の実施形態と同一であるが、主記憶手段12にOSカーネル700が記憶され、その中に含まれているカーネルモジュールロード手段701およびカーネル動的パッチ手段702が、各々第1〜2の実施形態におけるプログラムローダ14および動的パッチ手段16に相当する動作を行う。カーネルモジュールロード手段701は、関数実行時間の計測対象となる対象カーネル703を読み込んで動作させる。
さらに主記憶手段12には実行時間計測モジュール710もカーネルモジュールの一つとして記憶されて動作し、これが各々第1〜2の実施形態における実行時間計測プログラム210(510)と同様の動作を行う。プロセス別記憶領域103、実行時間記録手段15については、第1〜2の実施形態と同様である。
カーネル動的パッチ手段702、および実行時間計測モジュール710は、対象カーネル703に対して第1もしくは第2の実施形態と同一の動作を行うことによって、対象カーネル703の特定の条件における関数実行時間の計測を行う。その具体的な動作についての説明は、図4〜5、もしくは図8〜9のフローチャートに示した動作と同一である。
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
上述した実施形態について、その新規な技術内容の要点をまとめると、以下のようになる。なお、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
(付記1) 計測対象関数および指定関数を含む対象プログラムを実行するプロセッサを有し、前記計測対象関数の実行中に前記指定関数が実行された場合に当該計測対象関数の実行時間を測定する関数実行時間計測装置であって、
前記プロセッサで動作しているプロセスの動作状態を先入れ後出し(スタック)方式で記憶するプロセス別記憶領域と、
予め備えられた主記憶装置に前記対象プログラムを読み込むプログラムローダと、
前記対象プログラム内で前記計測対象関数の開始点および前記指定関数の開始点に各々、割り込み処理を発生させる第1および第2のフックを挿入する動的パッチ手段と、
前記第2のフックによる割り込み処理が発生した場合に、前記第1のフックによる割り込み処理の発生時刻から前記計測対象関数の実行終了までの経過時間を測定し、これを出力する実行時間計測手段と
を有すること、を特徴とする関数実行時間計測装置。
(付記2) 前記プロセス別記憶領域に、前記指定関数が実行されたか否かを示す二値データを記憶する指定処理実行フラグを併設すると共に、
前記実行時間計測手段が、前記第2のフックによる割り込み処理が発生した場合に前記指定処理実行フラグの値を前記指定関数が実行されたことを示す値に変更する機能を備えること、を特徴とする付記1に記載の関数実行時間計測装置。
(付記3) 前記実行時間計測手段が、
前記第1のフックによる割り込み処理が発生した場合に、その時点の時刻を前記プロセス別記憶領域に記憶する機能と、
前記第2のフックによる割り込み処理が発生し、かつ前記指定処理実行フラグの値が前記指定関数が実行されたことを示す値である場合に、前記プロセス別記憶領域に記憶された時刻から前記計測対象関数の実行終了までの経過時間を測定する機能と
を有すること、を特徴とする付記2に記載の関数実行時間計測装置。
(付記4) 前記プロセス別記憶領域に、前記計測対象関数の実行終了後に前記プロセッサによる処理を戻す戻りアドレスを記憶する戻りアドレス格納領域と、時刻を記憶する時刻格納領域とを併設すると共に、
前記実行時間計測手段が、
前記第1のフックによる割り込み処理が発生した場合に、前記プロセス別記憶領域に記憶された戻りアドレスを前記戻りアドレス格納領域に記憶し、その時点の時刻を前記時刻格納領域に記憶する機能と、
前記第2のフックによる割り込み処理が発生した場合に、前記プロセス別記憶領域に記憶された戻りアドレスと前記戻りアドレス格納領域に記憶された戻りアドレスが一致するか否かを判断し、一致すれば前記時刻格納領域に記憶された時刻から前記計測対象関数の実行終了までの経過時間を測定する機能と
を有すること、を特徴とする付記1に記載の関数実行時間計測装置。
(付記5) 前記プログラムローダ、前記動的パッチ手段および前記実行時間計測手段を、いずれも前記主記憶装置上に記憶されたOSカーネル上に読み込まれるカーネルモジュールとして構成したこと、を特徴とする付記1に記載の関数実行時間計測装置。
(付記6) 計測対象関数および指定関数を含む対象プログラムを実行するプロセッサと、前記プロセッサで動作しているプロセスを先入れ後出し(スタック)方式で記憶するプロセス別記憶領域とを有し、前記計測対象関数の実行中に前記指定関数が実行された場合に当該計測対象関数の実行時間を測定する関数実行時間計測装置にあって、
予め備えられた主記憶装置にプログラムローダが前記対象プログラムを読み込み、
前記対象プログラム内で前記計測対象関数の開始点および前記指定関数の開始点に各々、割り込み処理を発生させる第1および第2のフックを動的パッチ手段が挿入し、
前記第2のフックによる割り込み処理が発生した場合に、実行時間計測手段が前記第1のフックによる割り込み処理の発生時刻から前記計測対象関数の実行終了までの経過時間を測定し、これを出力すること、を特徴とする関数実行時間計測方法。
(付記7) 前記プロセス別記憶領域に、前記指定関数が実行されたか否かを示す二値データを記憶する指定処理実行フラグを併設すると共に、
前記第2のフックによる割り込み処理が発生した場合に、前記実行時間計測手段が前記指定処理実行フラグの値を前記指定関数が実行されたことを示す値に変更すること、を特徴とする付記6に記載の関数実行時間計測方法。
(付記8) 前記第1のフックによる割り込み処理が発生した場合に、前記実行時間計測手段がその時点の時刻を前記プロセス別記憶領域に記憶し、
前記第2のフックによる割り込み処理が発生し、かつ前記指定処理実行フラグの値が前記指定関数が実行されたことを示す値である場合に、前記実行時間計測手段が前記プロセス別記憶領域に記憶された時刻から前記計測対象関数の実行終了までの経過時間を測定すること、を特徴とする付記7に記載の関数実行時間計測方法。
(付記9) 前記プロセス別記憶領域に、前記計測対象関数の実行終了後に前記プロセッサによる処理を戻す戻りアドレスを記憶する戻りアドレス格納領域と、時刻を記憶する時刻格納領域とを併設すると共に、
前記第1のフックによる割り込み処理が発生した場合に、前記実行時間計測手段が前記プロセス別記憶領域に記憶された戻りアドレスを前記戻りアドレス格納領域に記憶し、その時点の時刻を前記時刻格納領域に記憶し、
前記第2のフックによる割り込み処理が発生した場合に、前記実行時間計測手段が前記プロセス別記憶領域に記憶された戻りアドレスと前記戻りアドレス格納領域に記憶された戻りアドレスが一致するか否かを判断し、前記戻りアドレスが一致すれば前記実行時間計測手段が前記時刻格納領域に記憶された時刻から前記計測対象関数の実行終了までの経過時間を測定すること、を特徴とする付記6に記載の関数実行時間計測方法。
(付記10) 計測対象関数および指定関数を含む対象プログラムを実行するプロセッサと、前記プロセッサで動作しているプロセスを先入れ後出し(スタック)方式で記憶するプロセス別記憶領域とを有し、前記計測対象関数の実行中に前記指定関数が実行された場合に当該計測対象関数の実行時間を測定する関数実行時間計測装置にあって、
前記関数実行時間計測装置が備えるプロセッサに、
予め備えられた主記憶装置に前記対象プログラムを読み込む手順、
前記対象プログラム内で前記計測対象関数の開始点および前記指定関数の開始点に各々、割り込み処理を発生させる第1および第2のフックを挿入する手順、
および前記第2のフックによる割り込み処理が発生した場合に、実行時間計測手段が前記第1のフックによる割り込み処理の発生時刻から前記計測対象関数の実行終了までの経過時間を測定し、これを出力する手順を実行させること、を特徴とする関数実行時間計測プログラム。
(付記11) 前記第2のフックによる割り込み処理が発生した場合に、前記プロセス別記憶領域に予め併設された二値データを記憶する指定処理実行フラグの値を前記指定関数が実行されたことを示す値に変更する手順を実行させること、を特徴とする付記10に記載の関数実行時間計測プログラム。
(付記12) 前記第1のフックによる割り込み処理が発生した場合に、その時点の時刻を前記プロセス別記憶領域に記憶する手順と、
前記第2のフックによる割り込み処理が発生し、かつ前記指定処理実行フラグの値が前記指定関数が実行されたことを示す値である場合に、前記プロセス別記憶領域に記憶された時刻から前記計測対象関数の実行終了までの経過時間を測定する手順とをさらに実行させること、を特徴とする付記11に記載の関数実行時間計測プログラム。
(付記13) 前記第1のフックによる割り込み処理が発生した場合に、前記実行時間計測手段が前記プロセス別記憶領域に予め併設されたプロセス別記憶領域に記憶された戻りアドレスを前記戻りアドレス格納領域に記憶し、その時点の時刻を前記プロセス別記憶領域に予め併設された前記時刻格納領域に記憶する手順と、
前記第2のフックによる割り込み処理が発生した場合に、前記プロセス別記憶領域に記憶された戻りアドレスと前記戻りアドレス格納領域に記憶された戻りアドレスが一致するか否かを判断し、前記戻りアドレスが一致すれば前記時刻格納領域に記憶された時刻から前記計測対象関数の実行終了までの経過時間を測定する手順とをさらに実行させること、を特徴とする付記10に記載の関数実行時間計測プログラム。
本発明はコンピュータプログラミング全般に対して適用可能である。
1、10、310、610 関数実行時間計測装置
1a、11 プロセッサ
1b、103 プロセス別記憶領域
2、14 プログラムローダ
3、16 動的パッチ手段
4、22、322 実行時間計測手段
12 主記憶手段
13 外部記憶手段
15 実行時間記録手段
21 対象プログラム実行手段
22a、322a スタック書き替え機能
101 対象プログラム領域
102 計測プログラム領域
103a 実行終了時の戻りアドレス
103b 実行開始時刻
103c 実行時間計測後処理アドレス
104 指定処理実行フラグ
200 対象プログラム
201 計測対象関数
202 指定関数
203 指定外関数
204a、204b フック
210、510 実行時間計測プログラム
404 戻りアドレス格納領域
405 時刻格納領域
700 OSカーネル
701 カーネルモジュールロード手段
702 カーネル動的パッチ手段
703 対象カーネル
710 実行時間計測モジュール

Claims (10)

  1. 計測対象関数および指定関数を含む対象プログラムを実行するプロセッサを有し、前記計測対象関数の実行中に前記指定関数が実行された場合に当該計測対象関数の実行時間を測定する関数実行時間計測装置であって、
    前記プロセッサで動作しているプロセスの動作状態を先入れ後出し(スタック)方式で記憶するプロセス別記憶領域と、
    予め備えられた主記憶装置に前記対象プログラムを読み込むプログラムローダと、
    前記対象プログラム内で前記計測対象関数の開始点および前記指定関数の開始点に、割り込み処理を発生させる第1および第2のフックを各々挿入する動的パッチ手段と、
    前記第2のフックによる割り込み処理が発生した場合に、前記第1のフックによる割り込み処理の発生時刻から前記計測対象関数の実行終了までの経過時間を測定し、これを出力する実行時間計測手段と
    を有すること、を特徴とする関数実行時間計測装置。
  2. 前記プロセス別記憶領域に、前記指定関数が実行されたか否かを示す二値データを記憶する指定処理実行フラグを併設すると共に、
    前記実行時間計測手段が、前記第2のフックによる割り込み処理が発生した場合に前記指定処理実行フラグの値を前記指定関数が実行されたことを示す値に変更する機能を備えること、を特徴とする請求項1に記載の関数実行時間計測装置。
  3. 前記実行時間計測手段が、
    前記第1のフックによる割り込み処理が発生した場合に、その時点の時刻を前記プロセス別記憶領域に記憶する機能と、
    前記第2のフックによる割り込み処理が発生し、かつ前記指定処理実行フラグの値が前記指定関数が実行されたことを示す値である場合に、前記プロセス別記憶領域に記憶された時刻から前記計測対象関数の実行終了までの経過時間を測定する機能と
    を有すること、を特徴とする請求項2に記載の関数実行時間計測装置。
  4. 前記プロセス別記憶領域に、前記計測対象関数の実行終了後に前記プロセッサによる処理を戻す戻りアドレスを記憶する戻りアドレス格納領域と、時刻を記憶する時刻格納領域とを併設すると共に、
    前記実行時間計測手段が、
    前記第1のフックによる割り込み処理が発生した場合に、前記プロセス別記憶領域に記憶された戻りアドレスを前記戻りアドレス格納領域に記憶し、その時点の時刻を前記時刻格納領域に記憶する機能と、
    前記第2のフックによる割り込み処理が発生した場合に、前記プロセス別記憶領域に記憶された戻りアドレスと前記戻りアドレス格納領域に記憶された戻りアドレスが一致するか否かを判断し、一致すれば前記時刻格納領域に記憶された時刻から前記計測対象関数の実行終了までの経過時間を測定する機能と
    を有すること、を特徴とする請求項1に記載の関数実行時間計測装置。
  5. 計測対象関数および指定関数を含む対象プログラムを実行するプロセッサと、前記プロセッサで動作しているプロセスを先入れ後出し(スタック)方式で記憶するプロセス別記憶領域とを有し、前記計測対象関数の実行中に前記指定関数が実行された場合に当該計測対象関数の実行時間を測定する関数実行時間計測装置にあって、
    予め備えられた主記憶装置にプログラムローダが前記対象プログラムを読み込み、
    前記対象プログラム内で前記計測対象関数の開始点および前記指定関数の開始点に、割り込み処理を発生させる第1および第2のフックを動的パッチ手段が各々挿入し、
    前記第2のフックによる割り込み処理が発生した場合に、実行時間計測手段が前記第1のフックによる割り込み処理の発生時刻から前記計測対象関数の実行終了までの経過時間を測定し、これを出力すること、を特徴とする関数実行時間計測方法。
  6. 前記プロセス別記憶領域に、前記指定関数が実行されたか否かを示す二値データを記憶する指定処理実行フラグを併設すると共に、
    前記第2のフックによる割り込み処理が発生した場合に、前記実行時間計測手段が前記指定処理実行フラグの値を前記指定関数が実行されたことを示す値に変更すること、を特徴とする請求項5に記載の関数実行時間計測方法。
  7. 前記第1のフックによる割り込み処理が発生した場合に、前記実行時間計測手段がその時点の時刻を前記プロセス別記憶領域に記憶し、
    前記第2のフックによる割り込み処理が発生し、かつ前記指定処理実行フラグの値が前記指定関数が実行されたことを示す値である場合に、前記実行時間計測手段が前記プロセス別記憶領域に記憶された時刻から前記計測対象関数の実行終了までの経過時間を測定すること、を特徴とする請求項6に記載の関数実行時間計測方法。
  8. 前記プロセス別記憶領域に、前記計測対象関数の実行終了後に前記プロセッサによる処理を戻す戻りアドレスを記憶する戻りアドレス格納領域と、時刻を記憶する時刻格納領域とを併設すると共に、
    前記第1のフックによる割り込み処理が発生した場合に、前記実行時間計測手段が前記プロセス別記憶領域に記憶された戻りアドレスを前記戻りアドレス格納領域に記憶し、その時点の時刻を前記時刻格納領域に記憶し、
    前記第2のフックによる割り込み処理が発生した場合に、前記実行時間計測手段が前記プロセス別記憶領域に記憶された戻りアドレスと前記戻りアドレス格納領域に記憶された戻りアドレスが一致するか否かを判断し、前記戻りアドレスが一致すれば前記実行時間計測手段が一致すれば前記時刻格納領域に記憶された時刻から前記計測対象関数の実行終了までの経過時間を測定すること、を特徴とする請求項5に記載の関数実行時間計測方法。
  9. 計測対象関数および指定関数を含む対象プログラムを実行するプロセッサと、前記プロセッサで動作しているプロセスを先入れ後出し(スタック)方式で記憶するプロセス別記憶領域とを有し、前記計測対象関数の実行中に前記指定関数が実行された場合に当該計測対象関数の実行時間を測定する関数実行時間計測装置にあって、
    前記関数実行時間計測装置が備えるプロセッサに、
    予め備えられた主記憶装置に前記対象プログラムを読み込む手順、
    前記対象プログラム内で前記計測対象関数の開始点および前記指定関数の開始点に、割り込み処理を発生させる第1および第2のフックを各々挿入する手順、
    および前記第2のフックによる割り込み処理が発生した場合に、実行時間計測手段が前記第1のフックによる割り込み処理の発生時刻から前記計測対象関数の実行終了までの経過時間を測定し、これを出力する手順を実行させること、を特徴とする関数実行時間計測プログラム。
  10. 前記第2のフックによる割り込み処理が発生した場合に、前記プロセス別記憶領域に予め併設された二値データを記憶する指定処理実行フラグの値を前記指定関数が実行されたことを示す値に変更すること、を特徴とする請求項9に記載の関数実行時間計測プログラム。
JP2013101152A 2013-05-13 2013-05-13 関数実行時間計測装置、関数実行時間計測方法、関数実行時間計測プログラム Pending JP2014222384A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013101152A JP2014222384A (ja) 2013-05-13 2013-05-13 関数実行時間計測装置、関数実行時間計測方法、関数実行時間計測プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013101152A JP2014222384A (ja) 2013-05-13 2013-05-13 関数実行時間計測装置、関数実行時間計測方法、関数実行時間計測プログラム

Publications (1)

Publication Number Publication Date
JP2014222384A true JP2014222384A (ja) 2014-11-27

Family

ID=52121890

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013101152A Pending JP2014222384A (ja) 2013-05-13 2013-05-13 関数実行時間計測装置、関数実行時間計測方法、関数実行時間計測プログラム

Country Status (1)

Country Link
JP (1) JP2014222384A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101637201B1 (ko) * 2016-01-06 2016-07-07 (주) 다봄소프트 함수 후킹을 이용한 리눅스 또는 유닉스 시스템용 c언어 기반 어플리케이션 성능 관리 모듈
CN110457196A (zh) * 2019-08-16 2019-11-15 腾讯科技(深圳)有限公司 函数执行时间的获取方法及装置
CN112882912A (zh) * 2021-02-01 2021-06-01 华东师范大学 一种应用于并行科学计算程序的函数运行时间测量方法
US11755101B2 (en) 2020-12-09 2023-09-12 Fujitsu Limited Non-transitory computer-readable recording medium and aggregation method

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101637201B1 (ko) * 2016-01-06 2016-07-07 (주) 다봄소프트 함수 후킹을 이용한 리눅스 또는 유닉스 시스템용 c언어 기반 어플리케이션 성능 관리 모듈
CN110457196A (zh) * 2019-08-16 2019-11-15 腾讯科技(深圳)有限公司 函数执行时间的获取方法及装置
CN110457196B (zh) * 2019-08-16 2023-10-24 腾讯科技(深圳)有限公司 函数执行时间的获取方法及装置
US11755101B2 (en) 2020-12-09 2023-09-12 Fujitsu Limited Non-transitory computer-readable recording medium and aggregation method
CN112882912A (zh) * 2021-02-01 2021-06-01 华东师范大学 一种应用于并行科学计算程序的函数运行时间测量方法

Similar Documents

Publication Publication Date Title
JP5933762B2 (ja) コード網羅率決定方法およびシステム
US8997059B2 (en) Reverse debugging
US9262299B1 (en) Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system
US9262305B1 (en) Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system
JP2014222384A (ja) 関数実行時間計測装置、関数実行時間計測方法、関数実行時間計測プログラム
CN104035863A (zh) 一种浏览器测试方法及装置
JP2008009721A (ja) 評価システム及びその評価方法
CN107608737B (zh) 动画播放方法及装置
US20140317129A1 (en) Data race analysis with improved detection filtering
JP2014106928A (ja) 試験方法、試験プログラム、および、試験制御装置
US11137740B2 (en) Numerical controller and method for determining look-ahead variable
US20140149968A1 (en) Dynamic library profiling method and dynamic library profiling system
JP5982845B2 (ja) トレース制御装置及びトレース制御方法
JP2005339204A (ja) 情報処理装置およびプログラムのテスト方法
TWI490720B (zh) 影像離線編程系統及方法
CN106095631B (zh) 一种基于有限状态机实现的多周期非流水线cpu动态调试方法
JP6512032B2 (ja) スタブ化対象判定装置、方法、及びプログラム
US10339229B1 (en) Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system
JP2008090699A (ja) トレースロギング方法、装置及びプログラム
JP4860564B2 (ja) プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム
JP2015069220A (ja) 性能評価プログラム生成装置、方法、及びプログラム
JP2007323299A (ja) レビュー実施順序決定装置、レビュー実施順序決定プログラム、レビュー実施順序決定プログラムが格納された記録媒体およびレビュー実施順序決定方法
JP6668808B2 (ja) 未テスト箇所検出装置、未テスト箇所検出方法、および、プログラム
WO2014147742A1 (ja) エラー分析方法、情報処理装置およびエラー分析プログラム
JP5762229B2 (ja) プログラム性能の測定方法