JP2009110299A - プログラムを最適化するコンパイラ - Google Patents
プログラムを最適化するコンパイラ Download PDFInfo
- Publication number
- JP2009110299A JP2009110299A JP2007282322A JP2007282322A JP2009110299A JP 2009110299 A JP2009110299 A JP 2009110299A JP 2007282322 A JP2007282322 A JP 2007282322A JP 2007282322 A JP2007282322 A JP 2007282322A JP 2009110299 A JP2009110299 A JP 2009110299A
- Authority
- JP
- Japan
- Prior art keywords
- variable
- instruction
- value
- range
- program
- 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.)
- Granted
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
-
- 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/4434—Reducing the memory space required by the program code
- G06F8/4435—Detection or removal of dead or redundant code
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)
Abstract
【解決手段】プログラムを最適化するコンパイラ装置であって、前記プログラム中の変数に値を代入する命令について、当該命令が実行された場合における当該変数の値域として、当該命令が当該変数に代入し得る値の範囲を解析する値域解析部と、解析した前記変数の値域に基づいて、当該命令が前記変数の値域内の何れの値を当該変数に代入しても、前記プログラムの実行結果が変化しないか判断する判断部と、前記判断部による判断が成立することを条件に、当該変数に値を代入する当該命令を、前記変数の値域内の定数値を当該変数に代入する命令に置換する置換部とを備えるコンパイラ装置を提供する。
【選択図】図8
Description
なお、参考文献として、代入命令に関する各種の最適化については以下の特許文献1を参照されたい。非特許文献1−2については、後に参照する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
このように、本実施形態に係るコンパイラ装置10は、代入命令を最適化することで、代入すべき値を生成するための処理を不要とし、さらに、その処理が不要となったことにより追加的に各種の最適化を行うことができる。以降、詳しく説明する。
図2は、本実施形態に係る入力プログラム20Aおよびライブラリ・プログラム22Aの具体例を示す。入力プログラム20Aは、1行目に、methodAというメソッドを呼び出して、その戻り値をanswerという変数の代入する命令を含む。また、入力プログラム20Aは、3−5行目に、その変数answerの値がnullポインタと等しければ、オブジェクトの生成に失敗したとして、所定の処理を行う命令を含む。
図3は、本実施形態に係る中間プログラム24Aの具体例を示す。1−4行目には、methodA内の各命令が、戻り値をリターンする命令を除きそのまま展開されている。
以上、この第1例に示すように、コンパイラ装置10によれば、記憶領域の確保および初期化などの、オブジェクトの生成に伴う各種の処理を省略して、プログラムの実行を効率化できる。
図5は、本実施形態に係る入力プログラム20Bおよびライブラリ・プログラム22Bの具体例を示す。入力プログラム20Bは、1行目に、methodBというメソッドを呼び出して、その戻り値をanswerという変数の代入する命令を含む。また、入力プログラム20Aは、3−5行目に、その変数answerの値が整数−1という定数値と等しければ、文字の検索に失敗したとして、所定の処理を行う命令を含む。
図6は、本実施形態に係る中間プログラム24Bの具体例を示す。1−6行目には、methodB内の各命令が、戻り値をリターンする命令を除きそのまま展開されている。
このように、本実施形態に係る代入最適化部110によれば、値を算出する演算を単に削除できるだけでなく、演算を削除した結果として他の最適化の機会を拡大することができる。
図8は、本実施形態に係る代入最適化部110の機能構成を示す。代入最適化部110は、値域解析部800と、判断部830と、置換部840と、イディオム検出部850とを備える。値域解析部800は、記憶装置1040にアクセスして中間プログラム24を読み出す。そして、値域解析部800は、中間プログラム24中の変数に値を代入する命令について、その命令が実行された場合におけるその変数の値域として、その命令がその変数に代入し得る値の範囲を解析する。
値域解析部800は、以上のような、変数の値の範囲の伝播を、変数の値の範囲が変更されなくなるまで繰り返す。
図11は、図9のS920における処理の詳細を示す。まず、第1データ除外部810は、論理値がFALSEの値域データを1つ、値域データ50の中から選択する(S1100)。そして、第1データ除外部810は、選択したその値域データが、他の何れかの値域データと比較して、実行直前および実行直後における変数の値域の組が相互に等しいかを判断する(S1110)。
以上、S920の処理によれば、変数vが条件分岐命令のために定数と比較され、かつ、その分岐先で四則演算に用いられているような場合には、変数vの値が具体的に必要であることを示す情報のみを残して、最適化を適切に制御できる。
図12は、図9のS930における処理の詳細を示す。まず、第2データ除外部820は、論理値がFALSEの値域データを1つ、値域データ50の中から選択する(S1200)。そして、第2データ除外部820は、選択したその値域データに含まれる、実行後の変数の値域が、他の何れかの値域データに含まれる、実行前の変数の値域と等しいかどうかを判断する(S1210)。
図13は、図9のS940における処理の詳細を示す。まず、判断部830は、記憶装置1040にアクセスして、論理値がFALSEの値域データを値域データ50の中から選択して読み出す(S1300)。
図14は、図9のS950における処理の詳細を示す。まず、置換部840は、命令sにより代入される変数vの値の範囲内から、定数値を選択し(S1400)、選択したその定数値を変数vに代入する命令により、命令sを置換する(S1410)。
図15は、図9のS960における処理の詳細を示す。イディオム検出部850は、中間プログラム24を走査することで、変数vに処理結果を代入する第1イディオムを検出する(S1500)。この第1イディオムは、複数の配列変数のそれぞれから予め定められた数の要素を読み出して先頭側から順次比較して、異なる要素値が検出された場合には最初に検出された要素値の差を変数vに代入する一方で、異なる要素値が検出されない場合には数値0を変数vに代入する処理である。
図16は、本実施形態に係る入力プログラム20Cおよびライブラリ・プログラム22Cの具体例を示す。入力プログラム20Cは、1行目に、methodCというメソッドを呼び出して、その戻り値をdiffという変数の代入する命令を含む。また、入力プログラム20Cは、3−7行目に、その変数diffの値が定数0と等しければ処理1を、変数diffの値が定数0と異なれば処理2を行う命令を含む。
第1イディオムが検出され、かつ、変数vの値に基づく条件分岐命令が第1条件を満たすことを条件に(S1520:YES)、置換部840は、検出されたその第1イディオムを、その第1イディオムに基づいて定まる所定の処理に置換する(S1530)。この所定の処理は、複数の配列変数のそれぞれから予め定められた数の要素を読み出して比較して、異なる要素値が検出された場合には0以外の所定の定数を変数vに代入する一方で、異なる要素値が検出されない場合には数値0を変数vに代入する処理である。
図18は、本実施形態に係る中間プログラム26Cの具体例を示す。1行目はCLC命令を示す。ここでは説明の明確化のため、CLC命令の実行コードではなく、その処理内容を記載した。また、2−6行目全体が、CCフラグの内容を変数diffにロードする命令tを示す。7−11行目は、図17の中間プログラム24Cの5−9行目と同一である。
図19は、本実施形態に係る入力プログラム20Dおよびライブラリ・プログラム22Dの具体例を示す。入力プログラム20Dは、1行目に、methodCというメソッドを呼び出して、その戻り値をdiffという変数の代入する命令を含む。また、入力プログラム20Dは、3−7行目に、その変数diffの値が定数0と等しければ処理1を、変数diffの値が正の数ならば処理2を、変数diffの値が負の数ならば処理3を、それぞれ行う命令を含む。ライブラリ・プログラム22Dは、1−7行目に、methodCの定義を含む。この定義は、ライブラリ・プログラム22Cの1−7行目に示したMmethodCの定義と同一であるから説明を省略する。
第1イディオムが検出され、かつ、変数vの値に基づく条件分岐命令が第2条件を満たすことを条件に(S1570:YES)、置換部840は、検出されたその第1イディオムを、その第1イディオムに基づいて定まる所定の処理に置換する(S1580)。この所定の処理は、複数の配列変数のそれぞれから予め定められた数の要素を読み出して比較して、異なる要素値が検出されない場合には数値0を変数vに代入し、一方の配列変数の要素が他方の配列変数の要素より大きい場合には所定の正の定数を変数vに代入する一方で、他方の配列変数の要素が一方の配列変数の要素より大きい場合には所定の負の定数を変数vの代入する処理である。
図21は、本実施形態に係る中間プログラム26Dの具体例を示す。1行目はCLC命令を示す。ここでは説明の明確化のため、CLC命令の実行コードではなく、その処理内容を記載した。また、2−8行目全体が、CCフラグの内容を変数diffにロードする命令tを示す。9−15行目は、図20の中間プログラム24Cの5−11行目と同一である。
図25は、本実施形態に係る中間プログラム26Dの他の具体例を、第2行から第8行の命令に対応する実行コードと対比して示す。図25(a)に示すように、2−8行目において、変数diffには、CCフラグの内容に基づき、0、1または2が代入されている。即ち、変数diffの値域が0、正の数、または、負の数であるのに対し、代入される定数値は0、正の数である1、または、正の数である2である。
図26は、本実施形態に係る入力プログラム20Eおよびライブラリ・プログラム22Eの具体例を示す。入力プログラム20Eに示すように、methodDが呼び出されて、その戻り値が変数answerに格納される。そして、変数answerの値は定数−1と比較されて、等しい場合には所定の処理が実行される。
図27は、本実施形態に係る中間プログラム24Eの具体例を示す。1−9行目には、methodD内の各命令が、戻り値をリターンする命令を除きそのまま展開されている。6行目を参照すると、変数answerには変数iが代入されている。そして、その変数iの取りうる値の範囲は、3行目などの処理より、0以上である。
15 コンパイラプログラム
20 入力プログラム
22 ライブラリ・プログラム
24 中間プログラム
26 中間プログラム
28 出力プログラム
50 値域データ
100 前段最適化部
110 代入最適化部
120 後段最適化部
700 コンピュータ
800 値域解析部
805 データ生成部
810 第1データ除外部
820 第2データ除外部
830 判断部
840 置換部
850 イディオム検出部
1000 CPU
1040 記憶装置
Claims (14)
- プログラムを最適化するコンパイラ装置であって、
前記プログラム中の変数に値を代入する命令について、当該命令が実行された場合における当該変数の値域として、当該命令が当該変数に代入し得る値の範囲を解析する値域解析部と、
解析した前記変数の値域に基づいて、当該命令が前記変数の値域内の何れの値を当該変数に代入しても、前記プログラムの実行結果が変化しないか判断する判断部と、
前記判断部による判断が成立することを条件に、当該変数に値を代入する当該命令を、前記変数の値域内の定数値を当該変数に代入する命令に置換する置換部と
を備えるコンパイラ装置。 - 前記プログラムを記憶する記憶装置を更に備え、
前記値域解析部は、前記記憶装置にアクセスして前記プログラムを走査することで、当該変数の値域を解析すると共に、さらに、前記プログラム中の当該変数を参照するそれぞれの命令について、当該命令が実行された場合における当該変数の値域を解析し、
前記判断部は、当該変数に値を代入するある命令についての前記変数の値域が、代入された当該変数の値に基づいて条件分岐するある命令についての前記変数の値域に包含され、かつ、当該変数を参照する他の何れの命令についての前記変数の値域とも重複しないかを判断し、
前記置換部は、前記判断部による判断が成立することを条件に、前記記憶装置にアクセスして、当該変数に値を代入する当該命令を、当該命令についての前記変数の値域の中から選択した定数値を当該変数に代入する命令に置換することにより、前記プログラムを変更する、請求項1に記載のコンパイラ装置。 - 前記値域解析部は、当該変数の値に基づいて条件分岐する命令については、当該条件分岐によるそれぞれの分岐先に対応付けて、当該分岐先における当該変数の値域を解析し、
前記判断部は、当該変数に値を代入するある命令についての前記変数の値域が、当該変数の値に基づいて条件分岐するある命令の何れかの分岐先における前記変数の値域に包含され、かつ、他の何れの分岐先における前記変数の値域および当該変数を参照する他の何れの命令についての前記変数の値域とも重複しないかを判断する、請求項2に記載のコンパイラ装置。 - 前記値域解析部は、
前記プログラム中のある変数を参照するそれぞれの命令について、当該命令が実行される直前における当該変数の値域、当該命令が実行された直後における当該変数の値域、および、当該命令が当該変数を定数と比較する命令かどうかを示す論理値、を含む、値域データを生成して前記記憶装置に格納するデータ生成部と、
前記記憶装置にアクセスして、命令が実行される直前における変数の値域、及び、命令が実行された直後における変数の値域の組が相互に等しく、前記論理値が異なる複数の値域データを検出したことを条件に、前記論理値が変数を定数と比較する命令であることを示す値域データを前記記憶装置から除外する第1データ除外部と、
前記記憶装置にアクセスして、第1の前記値域データに含まれる、対応する命令が実行された直後の当該変数の値域、が、第2の前記値域データに含まれる、対応する命令が実行される直前の当該変数の値域と一致し、かつ、前記第1の値域データに含まれる前記論理値が、対応する命令が変数を定数と比較する命令であることを示すことを条件に、前記第1の値域データを前記記憶装置から除外する第2データ除外部と
を有し、
前記判断部は、前記記憶装置にアクセスして、変数を定数と比較することを示す論理値を含むある値域データを読み出し、当該値域データに含まれる、命令が実行された直後における当該変数の値域が、当該変数に値を代入する命令についての前記変数の値域を包含するかどうか、および、他の値域データに含まれる、命令が実行された直後における当該変数の値域が、当該変数に値を代入する命令についての前記変数の値域と重複しないかどうかを判断する、請求項3に記載のコンパイラ装置。 - 複数の配列変数のそれぞれから予め定められた数の要素を読み出して比較して、異なる要素値が検出された場合には要素値の差を変数に代入する一方で、異なる要素値が検出されない場合には数値0を変数に代入する処理、を、前記プログラムを走査することで検出するイディオム検出部、を更に備え、
前記判断部は、前記イディオム検出部により当該処理が検出されたことを条件に、当該変数の値に基づいて条件分岐するある命令の第1の分岐先における当該変数の値域が、数値0のみを含み、かつ、当該命令の第2の分岐先における当該変数の値域が0以外のみを含むかどうかを判断し、
前記置換部は、前記イディオム検出部により検出された当該処理についての前記判断部による判断が成立することを条件に、複数の配列変数のそれぞれから予め定められた数の要素を読み出して比較して、異なる要素値が検出された場合には0以外の所定の定数を変数に代入する一方で、異なる要素値が検出されない場合には数値0を変数に代入する処理により、前記イディオム検出部により検出された当該処理を置換する、請求項3に記載のコンパイラ装置。 - 複数の配列変数のそれぞれから予め定められた数の要素を読み出して比較して、異なる要素値が検出された場合には要素値の差を変数に代入する一方で、異なる要素値が検出されない場合には数値0を変数に代入する処理、を、前記プログラムを走査することで検出するイディオム検出部、を更に備え、
前記判断部は、前記イディオム検出部により当該処理が検出されたことを条件に、当該変数の値に基づいて条件分岐するある命令の第1の分岐先における当該変数の値域が、数値0のみを含み、当該命令の第2の分岐先における当該変数の値域が正の数のみを含み、かつ、当該命令の第3の分岐先における当該変数の値域が負の数のみを含むかどうかを判断し、
前記置換部は、前記イディオム検出部により検出された当該処理についての前記判断部による判断が成立することを条件に、複数の配列変数のそれぞれから予め定められた数の要素を読み出して比較して、異なる要素値が検出されない場合には数値0を変数に代入し、一方の配列変数の要素が他方の配列変数の要素より大きい場合には所定の正の定数を変数に代入する一方で、他方の配列変数の要素が一方の配列変数の要素より大きい場合には所定の負の定数を変数の代入する処理により、前記イディオム検出部により検出された当該処理を置換する、請求項3に記載のコンパイラ装置。 - 前記イディオム検出部により検出された当該処理は、コンディション・コード・フラグに処理結果を格納する処理に置換され、
前記置換部は、前記イディオム検出部により検出された当該処理から当該変数の値に基づいて条件分岐する命令までの間にコンディション・コード・フラグが変更されないことを条件に、当該変数の値に基づいて条件分岐するある命令を、当該コンディション・コード・フラグに基づいて条件分岐する命令に置換する、請求項5または請求項6に記載のコンパイラ装置。 - 前記置換部は、置換すべき当該命令についての前記変数の値域の中から、前記プログラムをコンパイルした実行コードを実行するコンピュータにおいて、1命令でレジスタにロードすることができる即値(イミディエート・バリュー)の範囲内の値を選択して、当該選択した値を変数に代入する命令に置換する、請求項2に記載のコンパイラ装置。
- 前記置換部は、置換すべき当該命令についての前記変数の値域の中から、絶対値の最も小さい値を選択して、当該命令を、当該選択した値を変数に代入する命令に置換する、請求項2に記載のコンパイラ装置。
- 前記置換部は、置換すべき当該命令についての前記変数の値域の中から、2のべき乗の値を選択して、当該命令を、当該選択した値を変数に代入する命令に置換する、請求項2に記載のコンパイラ装置。
- 前記置換部は、前記判断部による判断が成立することを条件に、変数に値を代入する当該命令を、当該命令についての前記変数の値域外から選択した定数値を当該変数に代入する命令に置換すると共に、当該変数の値に基づいて条件分岐するある命令についての前記変数の値域が、当該選択した定数値を含むように、当該条件分岐する命令を変更する、請求項2に記載のコンパイラ装置。
- 前記値域解析部は、前記プログラム中のある変数に加えて、更に当該変数の値が代入される他の変数のそれぞれについても、当該変数を参照するそれぞれの命令について、当該命令が実行された場合における当該変数の値域を解析し、
前記判断部は、当該変数に値を代入するある命令についての前記変数の値域が、当該変数または当該変数の値が代入される他の変数の値に基づいて条件分岐するある命令についての前記変数の値域に包含され、かつ、当該変数または当該変数の値が代入される他の変数を参照する他の何れの命令についての前記変数の値域とも重複しないかを判断する、請求項2に記載のコンパイラ装置。 - コンピュータを、
プログラム中の変数に値を代入する命令について、当該命令が実行された場合における当該変数の値域として、当該命令が当該変数に代入し得る値の範囲を解析する値域解析部と、
解析した前記変数の値域に基づいて、当該命令が前記変数の値域内の何れの値を当該変数に代入しても、前記プログラムの実行結果が変化しないか判断する判断部と、
前記判断部による判断が成立することを条件に、当該変数に値を代入する当該命令を、前記変数の値域内の定数値を当該変数に代入する命令に置換する置換部
として機能させるコンパイラプログラム。 - コンピュータによりプログラムを最適化するコンパイル方法であって、
前記コンピュータにより、プログラム中の変数に値を代入する命令について、当該命令が実行された場合における当該変数の値域として、当該命令が当該変数に代入し得る値の範囲を解析するステップと、
前記コンピュータにより、解析した前記変数の値域に基づいて、当該命令が前記変数の値域内の何れの値を当該変数に代入しても、前記プログラムの実行結果が変化しないか判断するステップと、
前記判断するステップによる判断が成立することを条件に、当該変数に値を代入する当該命令を、前記変数の値域内の定数値を当該変数に代入する命令に置換するステップと
を備えるコンパイル方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007282322A JP5039948B2 (ja) | 2007-10-30 | 2007-10-30 | プログラムを最適化するコンパイラ |
US12/259,746 US8291398B2 (en) | 2007-10-30 | 2008-10-28 | Compiler for optimizing program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007282322A JP5039948B2 (ja) | 2007-10-30 | 2007-10-30 | プログラムを最適化するコンパイラ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009110299A true JP2009110299A (ja) | 2009-05-21 |
JP5039948B2 JP5039948B2 (ja) | 2012-10-03 |
Family
ID=40589443
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007282322A Expired - Fee Related JP5039948B2 (ja) | 2007-10-30 | 2007-10-30 | プログラムを最適化するコンパイラ |
Country Status (2)
Country | Link |
---|---|
US (1) | US8291398B2 (ja) |
JP (1) | JP5039948B2 (ja) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8255887B2 (en) * | 2006-11-29 | 2012-08-28 | International Business Machines Corporation | Method and apparatus for re-using memory allocated for data structures used by software processes |
US8381199B2 (en) * | 2010-10-19 | 2013-02-19 | International Business Machines Corporation | Modular and/or demand-driven string analysis of a computer program |
US9158544B2 (en) | 2011-06-24 | 2015-10-13 | Robert Keith Mykland | System and method for performing a branch object conversion to program configurable logic circuitry |
US10089277B2 (en) | 2011-06-24 | 2018-10-02 | Robert Keith Mykland | Configurable circuit array |
US8869123B2 (en) * | 2011-06-24 | 2014-10-21 | Robert Keith Mykland | System and method for applying a sequence of operations code to program configurable logic circuitry |
US9633160B2 (en) | 2012-06-11 | 2017-04-25 | Robert Keith Mykland | Method of placement and routing in a reconfiguration of a dynamically reconfigurable processor |
US9304770B2 (en) | 2011-11-21 | 2016-04-05 | Robert Keith Mykland | Method and system adapted for converting software constructs into resources for implementation by a dynamically reconfigurable processor |
US9043757B2 (en) * | 2012-12-13 | 2015-05-26 | Oracle International Corporation | Identifying differences between source codes of different versions of a software when each source code is organized using incorporated files |
CN104375875B (zh) * | 2013-08-15 | 2017-08-25 | 国际商业机器公司 | 用于应用程序的编译优化的方法以及编译器 |
JP2015114898A (ja) * | 2013-12-12 | 2015-06-22 | 株式会社東芝 | プログラム仕様推定装置およびその方法、ならびにプログラム |
US10175964B2 (en) * | 2014-09-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Compiler caching for runtime routine redundancy tracking |
KR20160070965A (ko) | 2014-12-11 | 2016-06-21 | 삼성전자주식회사 | 컴파일러 |
US9733911B2 (en) * | 2015-11-11 | 2017-08-15 | National Instruments Corporation | Value transfer between program variables using dynamic memory resource mapping |
JP2017211842A (ja) * | 2016-05-25 | 2017-11-30 | 富士通株式会社 | 情報処理装置、コンパイル管理方法、およびコンパイルプログラム |
CN108008981B (zh) * | 2016-10-27 | 2020-12-08 | 海信视像科技股份有限公司 | 一种片上系统SoC中进行程序初始化的方法和装置 |
EP3776867A1 (en) | 2018-03-27 | 2021-02-17 | Nchain Holdings Limited | Computer-implemented methods and systems relating to arithmetic coding for serialised arithmetic circuits |
US10970073B2 (en) * | 2018-10-02 | 2021-04-06 | International Business Machines Corporation | Branch optimization during loading |
US11080029B2 (en) | 2019-08-28 | 2021-08-03 | Red Hat, Inc. | Configuration management through information and code injection at compile time |
US11314496B2 (en) | 2020-06-25 | 2022-04-26 | Paypal, Inc. | Ultra-fast install and update of an operating system |
US11200038B1 (en) * | 2020-06-25 | 2021-12-14 | Paypal, Inc. | Fast compiling source code without dependencies |
US20230195434A1 (en) * | 2021-12-16 | 2023-06-22 | International Business Machines Corporation | Transformation of computer code based on idiom recognition and value constraint analysis |
CN115185687B (zh) * | 2022-07-08 | 2023-11-14 | 慧之安信息技术股份有限公司 | 基于深度学习的内存分配方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04323731A (ja) * | 1991-04-23 | 1992-11-12 | Nec Corp | 最適化テキスト編集方式 |
JPH06208470A (ja) * | 1993-01-11 | 1994-07-26 | Toshiba Corp | 目的コード最適化装置 |
JPH11149380A (ja) * | 1997-11-18 | 1999-06-02 | Hitachi Ltd | コンパイラとプログラム最適化方法およびその処理プログラムを記録した記録媒体 |
JP2000339172A (ja) * | 1999-05-28 | 2000-12-08 | Toshiba Corp | メモリ効率化方法 |
JP2001229030A (ja) * | 2000-02-18 | 2001-08-24 | Nec Microcomputer Technology Ltd | プログラム最適化処理装置及びプログラム最適化方法 |
JP2005071135A (ja) * | 2003-08-26 | 2005-03-17 | Fujitsu Ltd | 変数の統計処理を行うコンパイル処理プログラム、およびその記録媒体、およびその処理方法ならびにその処理装置 |
JP2005215830A (ja) * | 2004-01-28 | 2005-08-11 | Internatl Business Mach Corp <Ibm> | コンパイラ、コンパイル方法、コンパイルプログラム、及び記録媒体 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6247174B1 (en) * | 1998-01-02 | 2001-06-12 | Hewlett-Packard Company | Optimization of source code with embedded machine instructions |
US6961930B1 (en) * | 1999-09-22 | 2005-11-01 | Hewlett-Packard Development Company, L.P. | Efficient, transparent and flexible latency sampling |
US7080365B2 (en) * | 2001-08-17 | 2006-07-18 | Sun Microsystems, Inc. | Method and apparatus for simulation system compiler |
JP3813087B2 (ja) * | 2001-12-20 | 2006-08-23 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラム変換方法、コンピュータ装置及びプログラム |
US7269824B2 (en) * | 2003-02-13 | 2007-09-11 | Path Reliability, Inc. | Software behavior pattern recognition and analysis |
JP4403794B2 (ja) * | 2003-02-28 | 2010-01-27 | 株式会社デンソー | 制御プログラムの検査方法及び検査装置及び検査プログラム |
US7409678B2 (en) * | 2004-01-28 | 2008-08-05 | International Business Machines Corporation | Compiler, compilation and storage |
US20050273775A1 (en) * | 2004-06-07 | 2005-12-08 | Brookes Craig W | Apparatus, system, and method for identifying semantic errors in assembly source code |
CN101278262A (zh) * | 2004-08-12 | 2008-10-01 | 桑德布里奇技术公司 | 非循环的指令模式的识别方法 |
US20060129992A1 (en) * | 2004-11-10 | 2006-06-15 | Oberholtzer Brian K | Software test and performance monitoring system |
US7945898B1 (en) * | 2006-03-16 | 2011-05-17 | Avaya Inc. | Handling loops in programs and examining feasible software behavior for detecting malicious code |
-
2007
- 2007-10-30 JP JP2007282322A patent/JP5039948B2/ja not_active Expired - Fee Related
-
2008
- 2008-10-28 US US12/259,746 patent/US8291398B2/en not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04323731A (ja) * | 1991-04-23 | 1992-11-12 | Nec Corp | 最適化テキスト編集方式 |
JPH06208470A (ja) * | 1993-01-11 | 1994-07-26 | Toshiba Corp | 目的コード最適化装置 |
JPH11149380A (ja) * | 1997-11-18 | 1999-06-02 | Hitachi Ltd | コンパイラとプログラム最適化方法およびその処理プログラムを記録した記録媒体 |
JP2000339172A (ja) * | 1999-05-28 | 2000-12-08 | Toshiba Corp | メモリ効率化方法 |
JP2001229030A (ja) * | 2000-02-18 | 2001-08-24 | Nec Microcomputer Technology Ltd | プログラム最適化処理装置及びプログラム最適化方法 |
JP2005071135A (ja) * | 2003-08-26 | 2005-03-17 | Fujitsu Ltd | 変数の統計処理を行うコンパイル処理プログラム、およびその記録媒体、およびその処理方法ならびにその処理装置 |
JP2005215830A (ja) * | 2004-01-28 | 2005-08-11 | Internatl Business Mach Corp <Ibm> | コンパイラ、コンパイル方法、コンパイルプログラム、及び記録媒体 |
Also Published As
Publication number | Publication date |
---|---|
US8291398B2 (en) | 2012-10-16 |
JP5039948B2 (ja) | 2012-10-03 |
US20090119654A1 (en) | 2009-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5039948B2 (ja) | プログラムを最適化するコンパイラ | |
US8266603B2 (en) | Technique for allocating register to variable for compiling | |
US8146070B2 (en) | Method and apparatus for optimizing software program using inter-procedural strength reduction | |
JP5966509B2 (ja) | プログラム、コード生成方法および情報処理装置 | |
JP2002149416A (ja) | プログラムの最適化方法及びこれを用いたコンパイラ | |
CN107003885B (zh) | 用于低级别可组合高性能计算库的技术 | |
US9395986B2 (en) | Compiling method and compiling apparatus | |
US20160357529A1 (en) | Parallel computing apparatus and parallel processing method | |
JP2016207161A (ja) | 情報処理装置、コンパイル方法およびコンパイルプログラム | |
KR20190015285A (ko) | Cpu 이용 및 코드 리팩토링을 위한 쿼리 최적화기 | |
US9213548B2 (en) | Code generation method and information processing apparatus | |
JP3992102B2 (ja) | コンパイラ装置、コンパイル方法、コンパイラプログラム、及び記録媒体 | |
US10599406B2 (en) | Generating executable files through compiler optimization | |
US7979853B2 (en) | Compiler device, method, program and recording medium | |
JP4768984B2 (ja) | コンパイル方法、コンパイルプログラムおよびコンパイル装置 | |
JP6651974B2 (ja) | 情報処理装置、コンパイル方法及びコンパイラプログラム | |
JP2009211424A (ja) | 最適化箇所判定装置及び最適化箇所判定システム及びコンピュータプログラム及び最適化箇所判定方法 | |
JP4719415B2 (ja) | 情報処理システム及びコード生成方法 | |
JP6536266B2 (ja) | コンパイル装置、コンパイル方法およびコンパイルプログラム | |
JP2018124877A (ja) | コード生成装置、コード生成方法、およびコード生成プログラム | |
JP5932707B2 (ja) | 計算機、プログラム及びデータ生成方法 | |
CN113031952A (zh) | 深度学习模型的执行代码的确定方法、装置及存储介质 | |
US11144288B1 (en) | System and method for compiling rules set into bytecode using switch and class hierarchies | |
JP2014099108A (ja) | 実行時間算出装置、実行時間算出方法、およびプログラム | |
US10896272B2 (en) | High-level synthesis device, high-level synthesis method, and computer readable medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100623 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120427 |
|
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: 20120515 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20120516 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120607 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150720 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |