JP6080602B2 - 実フットプリント算出方法、該算出方法を用いたインラインするメソッドの決定方法、装置及びプログラム - Google Patents
実フットプリント算出方法、該算出方法を用いたインラインするメソッドの決定方法、装置及びプログラム Download PDFInfo
- Publication number
- JP6080602B2 JP6080602B2 JP2013032961A JP2013032961A JP6080602B2 JP 6080602 B2 JP6080602 B2 JP 6080602B2 JP 2013032961 A JP2013032961 A JP 2013032961A JP 2013032961 A JP2013032961 A JP 2013032961A JP 6080602 B2 JP6080602 B2 JP 6080602B2
- Authority
- JP
- Japan
- Prior art keywords
- inlined
- size
- determining
- computer
- code
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4443—Inlining
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Description
Cache line offset = Code offset>> log2(Size of a cache line) - (1)
Code offset = instruction address - Code start address - (2)
・実装対象
IBM (商標)Java(商標)Just-in-Time(JIT) コンパイラ 64ビット
・プラットフォーム
2コア、3.84GHzのPower7(商標)プロセッサ、AIX(商標)6.1オペレーティング・システム
・使用したベンチマーク
SPECjvm2008に含まれる実フットプリントの大きいCC(compiler.compiler)、CS(compiler.sunflow)、XML(xml.transform)と、DT(DayTrader/WebSphere 8.5)
・本発明を適用するプロファイラの動作
Java(商標)仮想マシンの起動から360秒、通常のコンパイルがある程度終了するのを待つ
60秒間命令をサンプリングした後、各メソッドの実フットプリントを算出する
総実フットプリントの10%の削減を目標とする
・比較対象
AggInl:サーバのように長時間実行されるアプリケーション用の積極的なインライニング閾値を使用
NoInl:インライニングを行わない
Normlnl:クライアントアプリケーション向けの標準的なインライニング閾値を使用
AggInl + UnInl:本発明
AggInl + Prof:本発明のプロファイラのみを稼動(オーバーヘッド測定用)
AggInl + HPM:本発明のHPMのカウンタのみを稼動(オーバーヘッド測定用)
Claims (15)
- コンピュータ処理により、メソッドの実フットプリントを算出する方法であって、
コンピュータが、コンパイル済みコードに含まれる各命令がどのメソッドに属するかを示すマップを作成するステップと、
前記コンピュータが、ハードウェア・パフォーマンス・カウンタを用いて実行された命令をサンプリングするステップと、
前記コンピュータが、前記マップを用いて、サンプリングした命令を該命令が属するメソッドにマップし、各メソッドの実フットプリントを、該メソッドに属する命令の中で一度でもサンプリングされた命令の総数として算出するステップと、
を含む方法。 - コンピュータ処理により、インラインするメソッドを決定する方法であって、
前記コンピュータが、請求項1に記載の方法により各メソッドの実フットプリントを算出するステップと、
前記コンピュータが、算出した各メソッドの実フットプリントに基づきインラインするメソッドを決定するステップと、を含む方法。 - 前記マップは、コンパイル済みコードに含まれる各命令と、該命令が属するインラインされたメソッドとの対応関係を示し、前記インラインするメソッドを決定するステップは、前記コンピュータが、算出した各メソッドの実フットプリントに基づきインラインされたメソッドの中からインライニングを解除するメソッドを決定するステップを含む、請求項2に記載の方法。
- 前記各メソッドの実フットプリントを算出するステップは、前記コンピュータが、前記メソッドがインラインされて生成された各コンテキストのサイズを、該コンテキストを構成する命令の中で一度でもサンプリングされた命令の総数として算出するステップと、前記コンピュータが、前記メソッドに対応する複数のコンテキストのサイズの合計を前記メソッドの総実フットプリントとして算出するステップとを含み、前記インラインするメソッドを決定するステップは、前記コンピュータが、各メソッドの総実フットプリントに基づきインラインされたメソッドの中からインライニングを解除するメソッドを決定するステップを含む、請求項3に記載の方法。
- 前記インラインするメソッドを決定するステップは、前記コンピュータが、各メソッドについて、該メソッドの総実フットプリントから、前記メソッドに対応する複数のコンテキストのサイズのうち最大のサイズを差し引いた値を削減値として求めるステップと、前記コンピュータが、前記コンパイル済みコードのサイズが目標のコードサイズ以下になるまで、前記各メソッドの削減値をその値の大きい順に前記コンパイル済みコードのサイズから差し引くステップと、前記コンピュータが、前記削減値を差し引かれたメソッドを、インライニングを解除するメソッドとして決定するステップとを含む、請求項4に記載の方法。
- 前記インラインするメソッドを決定するステップは、前記コンピュータが、前記各メソッドの前記削減値を該メソッドに対応する複数のコンテキストのうちサイズが0でないコンテキストの数で割って利益値とするステップを更に含み、前記各メソッドの削減値を前記コンパイル済みコードのサイズから差し引く順番を、前記各メソッドの前記利益値の大きい順とする、請求項5に記載の方法。
- 前記インラインするメソッドを決定するステップは、前記コンピュータが、サイズが0でないコンテキストを複数有さないメソッドを、インライニングを解除するメソッドの対象から除外するステップを更に含む、請求項6に記載の方法。
- 前記インラインするメソッドを決定するステップは、前記コンピュータが、ルートメソッドとしてコンパイルされるメソッドに含まれるメソッドを、インライニングを解除するメソッドの対象から除外するステップを更に含む、請求項6に記載の方法。
- 前記インラインするメソッドを決定するステップは、前記コンピュータが、前記目標のコードサイズを、過去に算出された前記各メソッドの総実フットプリントの合計値の中で最大の合計値に所定の削減率を掛けた値として算出するステップを更に含む、請求項5に記載の方法。
- 前記コンピュータが、前記コンパイル済みコードのサイズが前記目標のコードサイズよりも小さい場合に、インラインするメソッドを決定するための一連のステップの実行を一定期間休止するステップを更に含む、請求項5に記載の方法。
- 前記コンピュータが、前記サンプリングした命令を格納するキャッシュライン数をカウントするステップと、前記キャッシュライン数が所定の閾値より小さいことを条件に、インラインするメソッドを決定するための一連のステップの実行を一定期間休止するステップとを更に含む、請求項4に記載の方法。
- 請求項2乃至11のいずれかに一項に記載の方法の各ステップを前記コンピュータに実行させる、インラインするメソッドを決定するためのプログラム。
- 請求項2乃至11のいずれかに一項に記載の方法の各ステップを実行するように適合された手段を備える、インライニング対象決定装置。
- 請求項1に記載の方法の各ステップを前記コンピュータに実行させる、実フットプリント算出プログラム。
- 請求項1に記載の方法の各ステップを実行するように適合された手段を備える、実フットプリント算出装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013032961A JP6080602B2 (ja) | 2013-02-22 | 2013-02-22 | 実フットプリント算出方法、該算出方法を用いたインラインするメソッドの決定方法、装置及びプログラム |
US14/186,136 US9383980B2 (en) | 2013-02-22 | 2014-02-21 | Determining a method to inline using an actual footprint calculation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013032961A JP6080602B2 (ja) | 2013-02-22 | 2013-02-22 | 実フットプリント算出方法、該算出方法を用いたインラインするメソッドの決定方法、装置及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014164379A JP2014164379A (ja) | 2014-09-08 |
JP6080602B2 true JP6080602B2 (ja) | 2017-02-15 |
Family
ID=51389624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013032961A Expired - Fee Related JP6080602B2 (ja) | 2013-02-22 | 2013-02-22 | 実フットプリント算出方法、該算出方法を用いたインラインするメソッドの決定方法、装置及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US9383980B2 (ja) |
JP (1) | JP6080602B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6223927B2 (ja) | 2014-08-12 | 2017-11-01 | 矢崎総業株式会社 | 電子部品の組付構造 |
JP6572610B2 (ja) * | 2015-04-28 | 2019-09-11 | 富士通株式会社 | 情報処理装置、コンパイル方法およびコンパイルプログラム |
US10001979B2 (en) * | 2015-11-25 | 2018-06-19 | International Business Machines Corporation | Avoiding guard test invalidation for virtual and interface calls |
US10261765B1 (en) * | 2018-03-09 | 2019-04-16 | Oracle International Corporation | Enhancing program execution using optimization-driven inlining |
US10795593B2 (en) * | 2018-09-10 | 2020-10-06 | Intel Corporation | Technologies for adjusting the performance of data storage devices based on telemetry data |
US11157252B2 (en) | 2019-04-30 | 2021-10-26 | International Business Machines Corporation | Assessment of the benefit of post-inlining program transformation in inlining decisions |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06202875A (ja) | 1992-12-28 | 1994-07-22 | Nec Corp | インライン展開による最適化を行うコンパイラ |
CA2102089C (en) | 1993-10-29 | 1999-05-25 | David M. Gillies | Recompilation of computer programs for enhanced optimization |
JP3606654B2 (ja) * | 1995-10-30 | 2005-01-05 | 富士通株式会社 | コンパイラ装置 |
JP3339317B2 (ja) * | 1996-07-24 | 2002-10-28 | 日本電気株式会社 | 動的情報利用型プログラム最適化装置 |
JPH10312291A (ja) | 1997-05-13 | 1998-11-24 | Toshiba Corp | コンパイラ装置 |
JPH10326193A (ja) | 1997-05-26 | 1998-12-08 | Hitachi Ltd | インライン展開関数の最適化のためのコンパイル方法 |
JP3492207B2 (ja) | 1998-07-16 | 2004-02-03 | Necマイクロシステム株式会社 | 組み込みソフトウェアの動的解析方法 |
US6161217A (en) | 1998-09-14 | 2000-12-12 | Sun Microsystems, Inc. | Accurate method for inlining virtual calls |
JP2001005673A (ja) | 1999-06-21 | 2001-01-12 | Hitachi Ltd | 最適化方法 |
JP3642772B2 (ja) | 2002-09-25 | 2005-04-27 | 三菱電機株式会社 | コンピュータ装置及びプログラム実行方法 |
US7386686B2 (en) * | 2003-03-28 | 2008-06-10 | Intel Corporation | Inlining with stack trace cache-based dynamic profiling |
JP2005215816A (ja) * | 2004-01-28 | 2005-08-11 | Hitachi Ltd | ハードウェアモニタを用いた性能プロファイリング方法 |
JP2007018254A (ja) | 2005-07-07 | 2007-01-25 | Toshiba Corp | 言語処理装置 |
JP2010140344A (ja) | 2008-12-12 | 2010-06-24 | Toshiba Corp | コンパイルシステム及びコンパイル方法 |
-
2013
- 2013-02-22 JP JP2013032961A patent/JP6080602B2/ja not_active Expired - Fee Related
-
2014
- 2014-02-21 US US14/186,136 patent/US9383980B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20140245274A1 (en) | 2014-08-28 |
JP2014164379A (ja) | 2014-09-08 |
US9383980B2 (en) | 2016-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6080602B2 (ja) | 実フットプリント算出方法、該算出方法を用いたインラインするメソッドの決定方法、装置及びプログラム | |
Curtsinger et al. | Coz: Finding code that counts with causal profiling | |
US9104433B2 (en) | Trace generation method, trace generation device, trace generation program product, and multi-level compilation using trace generation method | |
US6971091B1 (en) | System and method for adaptively optimizing program execution by sampling at selected program points | |
KR101942518B1 (ko) | 2 패스 자동화된 애플리케이션 인스트루먼테이션 | |
US8024719B2 (en) | Bounded hash table sorting in a dynamic program profiling system | |
US8307375B2 (en) | Compensating for instrumentation overhead using sequences of events | |
KR101438990B1 (ko) | 시스템 테스트 방법 | |
US8271999B2 (en) | Compensating for instrumentation overhead using execution environment overhead | |
Liu et al. | Pinpointing data locality bottlenecks with low overhead | |
JP5496849B2 (ja) | プロファイル計装方法、プログラム及びコンパイラ | |
Bond et al. | Continuous path and edge profiling | |
Barany | Python interpreter performance deconstructed | |
Li et al. | Djxperf: Identifying memory inefficiencies via object-centric profiling for java | |
Oliveira et al. | Analysis of WebAssembly as a strategy to improve JavaScript performance on IoT environments | |
Ibrahim et al. | Characterizing the relation between Apex-Map synthetic probes and reuse distance distributions | |
US8136103B2 (en) | Combining static and dynamic compilation to remove delinquent loads | |
Prokopec et al. | On evaluating the renaissance benchmarking suite: Variety, performance, and complexity | |
Majo et al. | Integrating profile caching into the hotspot multi-tier compilation system | |
Qawasmeh et al. | Open source task profiling by extending the openmp runtime api | |
Lim et al. | Identifying optimization opportunities within kernel execution in GPU codes | |
Radhakrishnan et al. | Execution characteristics of just-in-time compilers | |
Wimmer et al. | Phase detection using trace compilation | |
He et al. | Efficient dynamic program monitoring on multi-core systems | |
Chen et al. | DWT: Decoupled Workload Tracing for Data Centers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160209 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20161214 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20161220 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170117 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6080602 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |