JP2005352894A - 性能解析プログラム及び性能解析プログラムの生成方法 - Google Patents
性能解析プログラム及び性能解析プログラムの生成方法 Download PDFInfo
- Publication number
- JP2005352894A JP2005352894A JP2004174555A JP2004174555A JP2005352894A JP 2005352894 A JP2005352894 A JP 2005352894A JP 2004174555 A JP2004174555 A JP 2004174555A JP 2004174555 A JP2004174555 A JP 2004174555A JP 2005352894 A JP2005352894 A JP 2005352894A
- Authority
- JP
- Japan
- Prior art keywords
- measurement
- routine
- performance analysis
- time
- command
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 98
- 238000005259 measurement Methods 0.000 claims abstract description 232
- 230000006870 function Effects 0.000 claims description 46
- 238000012545 processing Methods 0.000 description 47
- 238000010586 diagram Methods 0.000 description 5
- 238000011835 investigation Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000691 measurement method Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
【解決手段】
ユーザプログラムのコンパイル過程において、サブルーチンや関数の呼び出しの直前、直後に時間取得用命令を埋め込むことにより、従来の性能解析プログラムで発生していた時間取得の誤差を軽減する。
【選択図】 図2
Description
この所要時間を求めるための性能解析を行うプログラムが、性能解析プログラムである。
ルーチンはプログラム内での立場によって大きく2つに分けられ、プログラムを開始する際に最初に呼び出され、プログラム全体の進行を管理するルーチンを「メインルーチン」、プログラムの実行中に他のルーチンから呼び出されて動作するルーチンを「サブルーチン」と呼ぶ。
本発明の他の目的は、自動的にコンパイラの一部として挿入する機能であり、測定ルーチンの一部をインライン展開することを特徴とする時間測定の誤差軽減方法及び該方法を用いたプログラムを提供することである。
本発明の他の目的は、測定ルーチンを呼び出すCALL文の直前、直後に測定ルーチンの一部である時間測定部分を、部分的なインライン展開を行うことにより、測定ルーチンを呼び出してから時間測定部分までにかかる時間の誤差を減らすことを特徴とする時間測定の誤差軽減方法及び該方法を用いたプログラムを提供することである。
前記測定終了ルーチンを呼び出す前記第2呼出命令文の後の第4時間測定用命令は、前記測定終了ルーチンの直後に実行される処理に対する時間測定の開始時間を取得するための命令である。
また、本発明を利用することにより、従来解析できなかったプロローグ処理及び、エピローグ処理の実行における変動時間を解決し、性能解析をより精密に行うよう改善する。
従来の時間測定方法では、呼ばれる回数が多いサブルーチンや関数に対する実行時間の計測に含まれる変動時間が多くなり、精度に問題があったが、本方式を適用することによりその、変動時間が計測されないため、より精密な時間の計測が可能となる。
すなわち、性能解析のための測定開始ルーチンCALL文の前後に、時間測定用命令を挿入、更に、測定終了ルーチンCALL文の前後に時間測定用命令を挿入することにより、プロローグ処理とエピローグ処理に必要な時間を除いた時間を測定することにより、より精密な性能解析を可能にする。
また、本発明によれば、コンピュータプログラムの性能チューニングを行う際、どのサブルーチンあるいは、関数がボトルネックとなっているかを調べるといった用途に適用できる。
図1を参照して、本発明の性能解析プログラムがコンピュータ上で生成される場合を例に挙げて説明する。
コンピュータ100は、CPU10と、記憶部20を具備している。
CPU10は、コンピュータ100の各部を制御し、各種プログラムを実行する。
記憶部20は、コンパイラ30を保存している。また、記憶部20は、必要に応じて、ソースプログラム40や、性能解析プログラム50を保存する。
ソースプログラム40は、人間がプログラミング言語で記述したソフトウェアの設計図(ソースコード)となるプログラムである。
性能解析プログラム50は、ソースプログラム40をコンパイルしたものであり、コンピュータが実行できる形式(オブジェクトコード)のプログラムである。
CPU10により実行されるコンパイラ30は、ソースプログラム40から性能解析プログラム50を生成する。
ルーチンはプログラム内での立場によって大きく2つに分けられ、プログラムを開始する際に最初に呼び出され、プログラム全体の進行を管理するルーチンを「メインルーチン」、プログラムの実行中に他のルーチンから呼び出されて動作するルーチンを「サブルーチン」と呼ぶ。
なお、ステートメントとは、プログラム内で何らかの処理を行う一つの完結した命令のことである。プログラムはこのようなステートメントの集まりで構成されている。
まず、コンパイラ30が、ソースプログラム40のコンパイル過程において、性能解析の調査対象となるソースプログラム40のステートメントの一つを最初のステートメントに設定し、調査を開始する(ステップS201)。
判定の結果、コンパイラ30は、全てのステートメントの調査が終わっていれば本処理を終了する。
全てのステートメントの調査が終わっていなければ、次に、コンパイラ30は手続き判定部31を用いて、調査中のステートメントが手続きの最初かどうかを判定する手続き判定を呼び出す(ステップS203)。
図3の手続き判定では、手続き判定部31は、処理中のステートメントがサブルーチンや関数であるかどうかを判定する(ステップS301)。
また、ステートメントがサブルーチンや関数でない場合、手続き判定部31は、キーワード"No" を示す値を戻り値として返す(ステップS303)。
まず、測定ルーチン埋め込み部32は、処理中の手続きの先頭に、測定開始ルーチンを呼び出すためのCALL文を埋め込む(ステップS401)。
そして、測定ルーチン埋め込み部32は、処理中の手続きの最後に、測定終了ルーチンを呼び出すためのCALL文を埋め込む(ステップS402)。
まず、時間測定用命令埋め込み部33は、測定開始ルーチンを呼び出すCALLステートメントの前後に時間測定用命令を埋め込む(ステップS501)。
そして、時間測定用命令埋め込み部33は、測定終了ルーチンを呼び出すCALLステートメントの前後に時間測定用命令を埋め込む(ステップS502)。
その後、コンパイラ30は、全てのステートメントを調査したかどうかを判定する処理へ戻る(ステップS202)。
ここでは例として、従来技術及び本発明のいずれにおいても、性能解析プログラムはCPUを備えたコンピュータ上で実行されるものとする。
従って、CPUが性能解析プログラムを実行するものとして説明する。
但し、前述した実行環境は説明のための例に過ぎず、実際には、本発明の性能解析プログラムの実行環境はコンピュータ上に限定されるものではない。
従来の性能解析プログラムにおいて、元の関数の実行中、測定ルーチンの呼び出しが行われた場合、測定ルーチンの処理に移行する(ステップS601)。
なお、実行中の測定ルーチンが測定開始ルーチンの時は、直前の測定終了ルーチンのエピローグ処理直前から当該測定開始ルーチンのプロローグ処理直後までの間に実行された元の関数に対する時間測定を終了する処理に該当する。
実行中の測定ルーチンが測定終了ルーチンの時は、直前の測定開始ルーチンのエピローグ処理直前から当該測定終了ルーチンのプロローグ処理直後までの間に実行されたサブルーチンに対する時間測定を終了する処理に該当する。
関数を特定することにより、どの関数に対する性能解析の結果であるか識別することができ、関数毎の性能情報の集計や、テーブル格納による性能情報の管理が可能となる。
なお、実行中の測定ルーチンが測定開始ルーチンの時は、当該測定開始ルーチンのエピローグ処理直前から当該測定終了ルーチンのプロローグ処理直後までの間に実行されるサブルーチンに対する時間測定を開始する処理に該当する。
実行中の測定ルーチンが測定終了ルーチンの時は、当該測定終了ルーチンのエピローグ処理直前から次の測定開始ルーチンのプロローグ処理直後までの間に実行される元の関数に対する時間測定を開始する処理に該当する。
なお、元の関数の実行中、再び測定ルーチンを呼び出す処理が実行されるときは、ステップS601の処理に移行する。
前述したように、CPUを備えたコンピュータ上で本発明の性能解析プログラムが実行される場合について例示する。
ここでは、CPUが性能解析プログラムを実行するものとして説明する。
なお、実行中の測定ルーチンが測定開始ルーチンの時は、直前の測定終了ルーチンの終了直後から当該測定開始ルーチンの開始直前までの間に実行された元の関数に対する時間測定を終了する処理に該当する。
実行中の測定ルーチンが測定終了ルーチンの時は、直前の測定開始ルーチンの終了直後から当該測定終了ルーチンの開始直前までの間に実行されたサブルーチンに対する時間測定を終了する処理に該当する。
関数を特定することにより、どの関数に対する性能解析の結果であるか識別することができ、関数毎の性能情報の集計や、テーブル格納による性能情報の管理が可能となる。
図8が従来の性能解析プログラムの例であり、図9が本発明の性能解析プログラムの例である。
従来の性能解析プログラムは、測定開始ルーチン、測定終了ルーチンのいずれにおいても、ルーチン内のプロローグ処理の直後とエピローグ処理の直前に時間取得命令が実行される。
本発明の性能解析プログラムは、測定開始ルーチンの呼び出しの前後、測定終了ルーチンの呼び出しの前後に、時間取得命令が実行される。
20… 記憶部
30… コンパイラ
31… 手続き判定部
32… 測定ルーチン埋め込み部
33… 時間測定用命令埋め込み部
40… ソースプログラム
50… 性能解析プログラム
100… コンピュータ
Claims (9)
- 性能解析を開始するための測定開始ルーチンを実行するステップと、
前記性能解析を終了するための測定終了ルーチンを実行するステップと、
前記測定開始ルーチンを呼び出す第1呼出命令文の前又は後の少なくとも一方にある時間測定用命令を実行するステップと、
前記測定終了ルーチンを呼び出す第2呼出命令文の前又は後の少なくとも一方にある時間測定用命令を実行するステップと
をコンピュータに実行させる
性能解析プログラム。 - 請求項1に記載の性能解析プログラムにおいて、
前記測定開始ルーチンを呼び出す前記第1呼出命令文の後の第1時間測定用命令は、前記測定開始ルーチンの直後に実行される処理に対する時間測定の開始時間を取得するための命令であり、
前記測定終了ルーチンを呼び出す前記第2呼出命令文の前の第2時間測定用命令は、前記測定終了ルーチンの直前に実行された処理に対する時間測定の終了時間を取得するための命令である
性能解析プログラム。 - 請求項1又は2に記載の性能解析プログラムにおいて、
前記測定開始ルーチンを呼び出す前記第1呼出命令文の前の第3時間測定用命令は、前記測定開始ルーチンの直前に実行された処理に対する時間測定の終了時間を取得するための命令であり、
前記測定終了ルーチンを呼び出す前記第2呼出命令文の後の第4時間測定用命令は、前記測定終了ルーチンの直後に実行される処理に対する時間測定の開始時間を取得するための命令である
性能解析プログラム。 - 請求項1乃至3のいずれか一項に記載の性能解析プログラムにおいて、
少なくとも一つのサブルーチンを有し、
前記性能解析は、前記サブルーチンの各々に対して個別に実施される
性能解析プログラム。 - 請求項1乃至4のいずれか一項に記載の性能解析プログラムにおいて、
少なくとも一つの関数を有し、
前記性能解析は、前記関数の各々に対して個別に実施される
性能解析プログラム。 - ソースプログラムのコンパイル過程において、
前記ソースプログラムに含まれる少なくとも一つの命令文がサブルーチン又は関数であるか否かを判定するステップと、
前記サブルーチン又は前記関数の先頭に測定開始ルーチンを呼び出す第1呼出命令文を埋め込み、前記サブルーチン又は前記関数の末尾に測定終了ルーチンを呼び出す第2呼出命令文を埋め込むステップと、
前記測定開始ルーチンを呼び出す前記第1呼出命令文の前又は後の少なくとも一方に時間測定用命令を埋め込むステップと、
前記測定終了ルーチンを呼び出す前記第2呼出命令文の前又は後の少なくとも一方に時間測定用命令を埋め込むステップと
を具備する性能解析プログラムの生成方法。 - 請求項6に記載の性能解析プログラムの生成方法において、
前記測定開始ルーチンを呼び出す前記第1呼出命令文の後に第1時間測定用命令を埋め込むステップと、
前記測定終了ルーチンを呼び出す前記第2呼出命令文の前に第2時間測定用命令を埋め込むステップと
を具備する性能解析プログラムの生成方法。 - 請求項6又は7に記載の性能解析プログラムの生成方法において、
前記測定開始ルーチンを呼び出す前記第1呼出命令文の前に第3時間測定用命令を埋め込むステップと、
前記測定終了ルーチンを呼び出す前記第2呼出命令文の後に第4時間測定用命令を埋め込むステップと
を具備する性能解析プログラムの生成方法。 - 請求項6乃至8のいずれか一項に記載の性能解析プログラムの生成方法を用いて生成された性能解析プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004174555A JP2005352894A (ja) | 2004-06-11 | 2004-06-11 | 性能解析プログラム及び性能解析プログラムの生成方法 |
US11/150,259 US20050278145A1 (en) | 2004-06-11 | 2005-06-13 | Performance analysis program and method for generating the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004174555A JP2005352894A (ja) | 2004-06-11 | 2004-06-11 | 性能解析プログラム及び性能解析プログラムの生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005352894A true JP2005352894A (ja) | 2005-12-22 |
Family
ID=35461599
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004174555A Pending JP2005352894A (ja) | 2004-06-11 | 2004-06-11 | 性能解析プログラム及び性能解析プログラムの生成方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20050278145A1 (ja) |
JP (1) | JP2005352894A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009015734A (ja) * | 2007-07-06 | 2009-01-22 | Ntt Data Corp | プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007145903A2 (en) | 2006-06-05 | 2007-12-21 | Acumem Ab | System for and method of capturing application characteristics data from a computer system and modeling target system |
US8443341B2 (en) | 2006-11-09 | 2013-05-14 | Rogue Wave Software, Inc. | System for and method of capturing application characteristics data from a computer system and modeling target system |
US8539455B2 (en) * | 2007-03-26 | 2013-09-17 | Rogue Wave Software, Inc. | System for and method of capturing performance characteristics data from a computer system and modeling target system performance |
EP2648105B8 (en) * | 2012-04-04 | 2019-06-05 | Accenture Global Services Limited | Database performance analysis |
KR101991687B1 (ko) * | 2012-11-23 | 2019-06-24 | 삼성전자 주식회사 | 동적 라이브러리 프로파일링 방법, 이를 기록한 컴퓨터로 읽을 수 있는 기록 매체 및 동적 라이브러리 프로파일링 시스템 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6144961A (en) * | 1995-08-31 | 2000-11-07 | Compuware Corporation | Method and system for non-intrusive measurement of transaction response times on a network |
US6108700A (en) * | 1997-08-01 | 2000-08-22 | International Business Machines Corporation | Application end-to-end response time measurement and decomposition |
US6041352A (en) * | 1998-01-23 | 2000-03-21 | Hewlett-Packard Company | Response time measuring system and method for determining and isolating time delays within a network |
US7051339B2 (en) * | 2001-06-29 | 2006-05-23 | Goldman, Sachs & Co. | System and method to measure latency of transaction information flowing through a computer system |
-
2004
- 2004-06-11 JP JP2004174555A patent/JP2005352894A/ja active Pending
-
2005
- 2005-06-13 US US11/150,259 patent/US20050278145A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009015734A (ja) * | 2007-07-06 | 2009-01-22 | Ntt Data Corp | プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
US20050278145A1 (en) | 2005-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3707727B2 (ja) | プログラムの最適化方法及びこれを用いたコンパイラ | |
US8336038B2 (en) | System and method for parallel execution of a program | |
US7016807B2 (en) | Device and method for monitoring a program execution | |
JPH11259437A (ja) | 不要バリア命令の削減方式 | |
US8689198B2 (en) | Compiling system and method for optimizing binary code | |
US7917899B2 (en) | Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus | |
JPH06314203A (ja) | コンパイラの最適化方法および装置 | |
JPH1097430A (ja) | 最適化のためにアセンブリコードルーチンをソースコードルーチンに挿入する方法およびそのシステム | |
US7908592B2 (en) | Software/hardware partitioning program and method | |
JP2017228029A (ja) | 並列化方法、並列化ツール、車載装置 | |
US6854110B2 (en) | System and method for obtaining scratch registers in computer executable binaries | |
US20050278145A1 (en) | Performance analysis program and method for generating the same | |
EP3486811A1 (en) | Simulation device, simulation system, simulation method and simulation program | |
US9182960B2 (en) | Loop distribution detection program and loop distribution detection method | |
JP2017204201A (ja) | 情報処理装置、コンパイル方法、およびコンパイルプログラム | |
JPH11167492A (ja) | ループ飛び出し文を含むループに対する配列サマリ解析方法 | |
EP0790555B1 (en) | Compile apparatus and method | |
CN101164042A (zh) | 在条件指令将不执行时停止等待源操作数 | |
RU2206119C2 (ru) | Способ получения объектного кода | |
JP4983238B2 (ja) | 模擬ソースプログラム生成プログラム及び装置、並びに情報処理方法 | |
JP5021584B2 (ja) | マイコンシミュレータ、そのシミュレーション方法、プログラム、及びコンピュータ読み取り可能な媒体 | |
JP6558310B2 (ja) | 並列化方法、並列化ツール | |
US20170344351A1 (en) | Information processing apparatus, compiling management method, and recording medium | |
JP2008071065A (ja) | インライン展開を行うコンパイル装置、方法、プログラム、記憶媒体 | |
JP5353587B2 (ja) | 組み込み用プログラム開発装置及び組み込み用プログラム開発方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080318 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081113 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090108 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20091026 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100114 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20100202 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20100312 |