JP2007226589A - プログラム変換システム - Google Patents

プログラム変換システム Download PDF

Info

Publication number
JP2007226589A
JP2007226589A JP2006047714A JP2006047714A JP2007226589A JP 2007226589 A JP2007226589 A JP 2007226589A JP 2006047714 A JP2006047714 A JP 2006047714A JP 2006047714 A JP2006047714 A JP 2006047714A JP 2007226589 A JP2007226589 A JP 2007226589A
Authority
JP
Japan
Prior art keywords
optimization
information
program
compiler
profile
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
JP2006047714A
Other languages
English (en)
Inventor
Kenji Ishizuka
憲司 石塚
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP2006047714A priority Critical patent/JP2007226589A/ja
Priority to US11/702,094 priority patent/US20070204260A1/en
Publication of JP2007226589A publication Critical patent/JP2007226589A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3457Performance evaluation by simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】実際の動作状態に対応し、かつプログラマが要求する性能を満たす最適な目的プログラムを生成するプログラム変換システムを提供する。
【解決手段】最適化指示情報に従って原始プログラムから目的プログラムを生成するコンパイラ10と、目的プログラムを結合して実行可能なロードモジュールを生成するリンカ20と、このロードモジュールを実行してプロファイル情報を生成するシミュレータ(または、エミュレータ)30と、このプロファイル情報とプログラマの性能要求を比較して性能要求を満たすように最適化指示情報を生成してコンパイラ10に与えるプロファイル解析処理部40と、このプロファイル解析処理部40の指示で再コンパイル処理を行うプログラムローダ50を備える。これにより、性能要求を満たすように最適化項目が順次追加され、最適な目的プログラムが生成できる。
【選択図】図1

Description

本発明は、高級プログラミング言語で書かれた原始プログラムを、コンピュータが直接解読できる目的プログラムに変換するコンパイラ等のプログラム変換システム、特にその変換処理の最適化制御に関するものである。
従来、コンパイラは、原始プログラム(ソースコード)を適切な最適化手法を用いて、目的プログラム(アセンブリコードまたはオブジェクトコード)に変換するようになっている。最適化手法としては、目的プログラムの実行速度を最速にする速度最適化や、生成する目的プログラムのサイズを最小にするコード最適化等がある。このため、コンパイラは、原始プログラムの構造を解析し、最適化要求の内容に応じて速度最適化またはコード最適化に対応した最適化手法を適用して、目的プログラムを生成するように構成されている。なお、下記特許文献1には、従来のコンパイラではアプリケーションプログラムの実際の動作条件に合致した最適化が困難であったことに鑑み、生成した目的プログラムの試行を実行させ、これによる計算機内部の動的状態を記録し、記録内容に基づいて更に未最適化部分の最適化を行う目的プログラムの最適化方法が記載されている。
特開平7−64799号公報
しかしながら、従来のコンパイラや前記特許文献1に記載された最適化方法では、目的プログラムの特定の動作において一定の効力を発揮するが、プログラマが要求する性能を満たすという保証はない。
本発明は、実際の動作状態に対応し、かつプログラマが要求する性能を満たす最適な目的プログラムを生成するプログラム変換システムを提供することを目的としている。
本発明のプログラム変換システムは、最適化指示情報が与えられたときは該最適化指示情報に基づいて予め定められた閾値の範囲内で最適化処理を行い、最適化指示情報が与えられていないときは定められた指定情報に基づいて最適化処理を行って原始プログラムを目的プログラムに変換し、該目的プログラムと共に最適化処理に用いた最適化情報を出力する翻訳手段と、前記翻訳手段から出力された目的プログラムに基づいてロードモジュールを生成する結合手段と、前記ロードモジュールを実行し、前記最適化情報とこれに関連する実行時情報からなるプロファイル情報を出力する実行手段と、与えられた要求性能と前記プロファイル情報中の実行時情報を比較し、該性能要求が満たされていれば処理を終了させ、該性能要求が満たされていないときには一定回数だけ該プロファイル情報中の最適化項目を順次変更して前記最適化指示情報として前記翻訳手段に与えると共に、再コンパイル指示を行う解析手段と、前記翻訳手段、前記結合手段、及び前記実行手段を順次動作させることにより、プログラム変換処理を制御する制御手段とを備えたことを特徴としている。
本発明では、要求性能と実行時情報を比較し、性能要求が満たされていないときには一定回数だけ最適化項目を順次変更して最適化指示を翻訳手段にフィードバックする解析手段と、この最適化指示に従って再コンパイルを行う翻訳手段と、再コンパイルされた目的プログラムを実行するための結合手段、実行手段及び制御手段を有している。これにより、実際の動作状態に対応してプログラマが要求する性能を満たす最適な目的プログラムを生成することができるという効果がある。
この発明の前記並びにその他の目的と新規な特徴は、次の好ましい実施例の説明を添付図面と照らし合わせて読むと、より完全に明らかになるであろう。但し、図面は、もっぱら解説のためのものであって、この発明の範囲を限定するものではない。
図1は、本発明の実施例を示すプログラム変換システムの構成図である。
このプログラム変換システムは、一般的なコンピュータのハードウエア資源を利用し、ソフトウエア処理によって原始プログラムを目的プログラムに変換するもので、翻訳手段(例えば、コンパイラ)10と、結合手段(例えば、リンカ)20と、実行手段(例えば、シュミュレータまたはエミュレータ)30と、解析手段(例えば、プロファイル解析処理部)40と、制御手段(例えば、プログラムローダ)50で構成されている。
なお、ハードウエア資源としては、原始プログラムやテストデータの入力データを入力するためのキーボード、ソフトウエア制御に従って論理演算処理を行う中央処理装置、処理中のプログラムやデータを記憶するメモリ、生成された目的プログラム等を記憶するハードディスク、及び処理結果をプログラマに表示するディスプレイ等が利用される。
コンパイラ10は、入力データとして与えられる高級プログラミング言語(ソースコード)で書かれた原始プログラムを、コンピュータが直接解読できるオブジェクトコード等の目的プログラムに変換するものである。このコンパイラ10中には、最適化指示情報に従って生成する目的プログラムの速度やサイズの最適化を行う最適化処理部11が含まれている。最適化処理部11では、最適化指示情報が与えられていない処理に対しては、予め定められた条件によって最適化処理を行い、最適化指示情報が与えられた処理に対しては、この最適化指示情報に基づいて予め定められた閾値の範囲内で最適化処理を行うものである。コンパイラ10で生成された目的プログラムは、最適化処理部11で適用した最適化情報と共に、リンカ20に与えられるようになっている。
リンカ20は、複数の目的プログラム(この中には、コンパイラ10から出力される目的プログラムの他に、予めサブルーチン等として登録されたものも含まれる。)を結合して、1つの実行可能なロードモジュールを生成するものである。リンカ20で生成されたロードモジュールは、コンパイラ10から与えられた最適化情報と共に、シミュレータ30に出力されるようになっている。
シミュレータ30は、プログラマ等によって準備されたテストデータを用いてロードモジュールを実行すると共に、実行時情報を収集してプロファイル情報を生成するものである。プロファイル情報は、最適化情報と実行時情報を関連付けて構成したもので、この実行時情報には、最適化の対象となったプログラムの位置情報と各位置に対応する処理の実行時間等が含まれている。シミュレータ30によるロードモジュールの実行で得られたプロファイル情報は、プロファイル解析処理部40に出力されるようになっている。
プロファイル解析処理部40は、プログラマから与えられた性能要求である要求情報とシミュレータ30から出力されたプロファイル情報中の実行時情報の内容を比較し、プログラマの要求を満たすように最適化情報を変更すると共に、再コンパイルの指示を行うものである。即ち、このプロファイル解析処理部40は、プロファイル情報を解析し、実行時情報の内容がプログラマの要求を満たしていれば、その時点でコンパイル処理を終了させる。もしも、実行時情報の内容がプログラマの要求を満たしていなければ、プロファイル解析処理部40は、最適化情報の中の最適化項目を変更してコンパイラ10に与え、その後、プログラムローダ50に対して再コンパイル指示を与えるようになっている。この動作は、プログラマの要求が満たされるか、あるいは予め設定された条件に達した時点で終了するようになっている。
プログラムローダ50は、コンパイラ10、リンカ20及びシュミュレータ30を順番に起動させることにより、一連のプログラム変換処理を制御するものである。プログラムローダ50による最初のコンパイル処理に起動は、プログラマの指示に従って開始されるが、2回目以降の再コンパイル処理は、プロファイル解析処理部40から与えられる再コンパイル指示によって開始されるようになっている。
図2は、図1の動作説明図である。以下、この図2を適宜参照しつつ、図1の動作を説明する。
プログラマから原始プログラムとテストデータ及び要求情報が与えられ、コンパイルの開始が指示されると、プログラムローダ50はコンパイラ10を起動させる。
コンパイラ10は原始プログラムを読み込む。ここで、原始プログラム中の測定対象箇所は、図2(a)に示すように、処理F1であり、この処理F1は、外部のモジュールに定義されている処理F2及び処理F3を呼び出しており、更に処理F3から処理F4を呼び出しているものとする。また、この処理F1に対してプログラマが要求する性能は、実行時間1000サイクルであるとする。
コンパイラ10は読み込んだ原始プログラムを順次変換していき、処理F1がコンパイルの対象となったときに、その処理に対する最適化項目の実施の有無を、図2(b)に示すように、初期値(図中では、“off”は未実施、“on”は実施済を示す)として記録する。処理F1に対するコンパイルを行っている最中に、処理F1から処理F2,F3が呼び出されていることが判明した場合には、これらの処理F2,F3に対する最適化項目の初期値を記録する。但し、きっかけとなる処理F1のコンパイルを行う前に、既に処理F2,F3に対するコンパイルが終了している場合には、その最適化項目に関する情報は記録されていないので、次回以降で処理F2,F3に対する最適化項目の情報を記録することを記しておく(図中には“不明”としている)。処理F2,F3に対するコンパイルを行っているときに、更に他の処理が呼び出されている場合には、その処理に対する最適化項目に関する情報も順次追記していく。
コンパイラ10による1回目のコンパイルが終了して目的プログラムが生成されると、この目的プログラムは、最適化情報と共に、リンカ20に与えられる。
リンカ20において、目的プログラムは必要に応じて他の目的プログラムと結合され、1つの実行可能なロードモジュールが生成される。リンカ20で生成されたロードモジュールは、コンパイラ10から与えられた最適化情報と共に、シミュレータ30に出力される。
シミュレータ30において、ロードモジュールはプログラマから与えられたテストデータを用いて実行される。このロードモジュールの実行によって、実行時間が収集され、図2(b)に示すように、実行時情報が追加されたプロファイル情報が生成される。ここで、実行時間は、図2(c)に示すように、処理F1の開始から終了までのサイクル数で、この中には、処理F1から呼び出された処理F2,F3の時間も含まれている。シミュレータ30による1回目の測定結果のプロファイル情報は、プロファイル解析処理部40に与えられる。
プロファイル解析処理部40は、シミュレータ30から出力されたプロファイル情報の解析を開始する。
1回目の測定結果からは、処理F1に対する最適化項目である乗算展開及びループ展開の最適化が実施されておらず、この処理F1の実行時間が1200サイクルであることが分かる。なお、乗算展開とは、定数式と乗算処理において乗算ライブラリを用いずに、シフト命令と加算命令を組み合わせた演算に置き換えて速度向上を実現するものである。また、ループ展開とは、繰り返し実行される処理本体を、繰り返し回数分だけ命令として展開することで速度向上を実現するものである。
コンパイラ10は、処理F1に対する乗算展開とループ展開を実行することによるプログラムサイズの増加が適切でないと判断して、これらの展開を抑止したものである。しかし、シミュレータ30で実行した結果、実行時間がプログラマの要求である1000サイクルを越えてしまい、要求を満たしていないことが判明する。
プロファイル解析処理部40は、プログラマの要求値と実測値を比較し、プログラマの要求する性能を満たすため、1回目で抑止した最適化項目を実施するようにプロファイル情報の最適化変更情報(変更値)を“on”に更新する。このとき、最適化の変更要求を一括して更新することはせずに、プログラムサイズの増加の影響が少ない最適化項目から優先して順次更新するようにしている。図2(b)では、ループ展開よりも乗算展開の方がプログラムサイズの増加が少ないものと仮定し、乗算展開を優先している。
プロファイル解析処理部40で生成された1回目の測定結果に対する最適化変更情報は、プロファイル情報としてコンパイラ10にフィードバックされる。更に、プロファイル解析処理部40からプログラムローダ50に対して、再コンパイル指示が出力される。これにより、プログラムローダ50はコンパイラ10を起動させ、このコンパイラ10による2回目のコンパイルが開始される。
コンパイラ10は、プロファイル解析処理部40から与えられた最適化変更情報に従って最適化処理を行って2回目の目的プログラムを生成し、実際に適用した最適化情報と共にリンカ20に出力する。
リンカ20による2回目のロードモジュールの生成、シミュレータ30による2回目のロードモジュールの実行、及びプロファイル解析処理部40による2回目の実行時情報の解析等の処理は、1回目の処理と同様に行われる。2回目の処理でも実測値がプログラマの要求値を満たしていない場合には、プロファイル解析処理部40によって、更なる最適化変更情報が追加され、3回目のコンパイル処理が行われる。
このようなコンパイル処理は、実測値がプログラマの要求値を満たすか、予め設定された条件に達するまで繰り返して行われる。ここで、予め設定された条件について、説明する。
プロファイル解析処理部40では、実測値がプログラマの要求値を満たすように、最適化処理項目を実施させるための最適化変更情報を順次追加する。一方、コンパイラ10の最適化処理部11は、プロファイル情報を参照し、最適化の変更要求が指定されており、かつ最適化項目の実施の最終値が得られていない場合、原始プログラムの対象の処理に対して、最適化項目の適用を試みる。しかし、各最適化処理項目を無条件に適用すると、生成されるプログラムサイズの肥大化や、最適化規模の拡大によるコンパイル時間の増大等の副作用が生じる場合がある。このため、閾値を設けてこれらの副作用の発生を抑止することが一般的である。
本実施例では、最適化処理部11において、標準値と許容値の2種類の閾値を活用することを特徴としている。標準値と許容値は、最適化項目毎に設定される最適化項目の実施可否を判断するための閾値である。閾値の内容は最適化項目に依存し、ビット数、構文木ノード数、バイト数等で表現される。
標準値は、プロファイル情報によって最適化の実施が指示されていない場合に使用される値で、許容値は、プロファイル情報によって最適化の実施が指示された場合に使用される値である。許容値は、標準値に対して最適化項目の実施を緩和する関係を有している。以下、標準値と許容値を使用した動作を、乗算展開を例に説明する。
乗算展開の閾値は構文木ノード数で表現され、標準値20、許容値40に設定されていると仮定する。また、最適化処理部11が現在着目している最適化対象の構文木ノード数は25とする。
プロファイル情報の変更要求に乗算展開の最適化指示が存在しない場合は、最適化実施の閾値として標準値が採用される。この場合、最適化対象の構文木ノード数は25で、標準値20を超過している。このため、コンパイラのオプション等で乗算展開が指示されていたとしても、乗算展開は実施されない。
一方、プロファイル情報の変更要求に乗算展開の最適化指示が存在する場合は、最適化実施の閾値として許容値が採用される。この場合、最適化対象の構文木ノード数は25で、許容値40を超過していない。従って、乗算展開は実施される。このとき、最適化変更情報の最終値には、図2(b)中の第2回目の処理F1に示したように、最適化項目として乗算展開が実施されたことを示す最終値“on”が記録される。逆に、最適化対象の構文木ノード数が許容値を超えてしまう場合には、たとえ最適化変更情報によって乗算展開の最適化指示が与えられたとしても、乗算展開は実施されず、最適化変更情報の最終値には、図2(b)中の第2回目の処理F3に示したように、最適化項目が実施されなかったことを示す最終値“off”が記録される。
このように、プロファイル解析処理部40から最適化項目の実施が指示された場合においても、コンパイラ10の最適化処理部11において、閾値による最適化の実施可否の判断を行うように構成することにより、最適化の実施範囲が限定されるので、最小限の副作用で目的プログラム全体の性能向上が実現される。
以上のように、本実施例のプログラム変換システムは、次のような利点がある。
(a) コンパイラ10の最適化処理部11で行った最適化処理の内容を示す最適化情報と、シミュレータ30によるロードモジュールの実行結果を示す実行時情報とを含むプロファイル情報に基づいて、プログラマから与えられた性能要求を満たすように、順次最適化項目を増加させる最適化変更情報を出力するプロファイル解析処理部40と、このプロファイル解析処理部40から出力される再コンパイル指定に基づいてコンパイラ10、リンカ20及びシミュレータ30を順次起動して再コンパイル処理を行わせるプログラムローダ50を有している。これにより、実際の動作状態に対応し、かつプログラマが要求する性能を満たす最適な目的プログラムを生成することができる。
(b) 一般的なコンパイラにおける最適化制御は、オプション指定や、プラグマ、特殊キーワードと呼ばれる各社のコンパイラ特有の文法を使用しているため、原始プログラムを他社または他のターゲット(コンピュータ等)に移植する際、移植対象のコンパイラの文法に合わせてプラグマや特殊キーワードの記述を変更しなければならない。しかし、本実施例のプログラム変換システムでは、コンパイラ特有の文法を使用していないので、原始プログラムを他のターゲットに容易に移植することができる。
なお、本実施例では、プログラム変換システムを、コンパイラ、リンカ、シミュレータ(または、エミュレータ)、プロファイル解析処理部、及びプログラムローダの5つの要素で構成しているが、構成要素の区分は例示したものに限定されない。
また、本発明は、上記実施例に限定されるものではない。即ち、ターゲットシステムの機械語またはアセンブラコードを生成するコンパイラと、コンパイラが生成した機械語を実行できるシステムに適用可能である。
本発明の実施例を示すプログラム変換システムの構成図である。 図1の動作説明図である。
符号の説明
10 コンパイラ
11 最適化処理部
20 リンカ
30 シミュレータ
40 プロファイル解析処理部
50 プログラムローダ

Claims (1)

  1. 最適化指示情報が与えられたときは該最適化指示情報に基づいて予め定められた閾値の範囲内で最適化処理を行い、最適化指示情報が与えられていないときは定められた指定情報に基づいて最適化処理を行って原始プログラムを目的プログラムに変換し、該目的プログラムと共に最適化処理に用いた最適化情報を出力する翻訳手段と、
    前記翻訳手段から出力された目的プログラムに基づいてロードモジュールを生成する結合手段と、
    前記ロードモジュールを実行し、前記最適化情報とこれに関連する実行時情報からなるプロファイル情報を出力する実行手段と、
    与えられた要求性能と前記プロファイル情報中の実行時情報を比較し、該性能要求が満たされていれば処理を終了させ、該性能要求が満たされていないときには一定回数だけ該プロファイル情報中の最適化項目を順次変更して前記最適化指示情報として前記翻訳手段に与えると共に、再コンパイル指示を行う解析手段と、
    前記翻訳手段、前記結合手段、及び前記実行手段を順次動作させることにより、プログラム変換処理を制御する制御手段とを、
    備えたことを特徴とするプログラム変換システム。
JP2006047714A 2006-02-24 2006-02-24 プログラム変換システム Pending JP2007226589A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006047714A JP2007226589A (ja) 2006-02-24 2006-02-24 プログラム変換システム
US11/702,094 US20070204260A1 (en) 2006-02-24 2007-02-05 Program transformation system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006047714A JP2007226589A (ja) 2006-02-24 2006-02-24 プログラム変換システム

Publications (1)

Publication Number Publication Date
JP2007226589A true JP2007226589A (ja) 2007-09-06

Family

ID=38445492

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006047714A Pending JP2007226589A (ja) 2006-02-24 2006-02-24 プログラム変換システム

Country Status (2)

Country Link
US (1) US20070204260A1 (ja)
JP (1) JP2007226589A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8656267B2 (en) * 2008-03-31 2014-02-18 International Business Machines Corporation Method of approximate document generation
JP4381459B1 (ja) * 2008-06-27 2009-12-09 株式会社東芝 情報処理装置、粒度調整方法およびプログラム
US8938728B2 (en) * 2010-04-05 2015-01-20 International Business Machines Corporation Dynamic compiler program, dynamic compiling method and dynamic compiling device
US10248554B2 (en) * 2016-11-14 2019-04-02 International Business Machines Corporation Embedding profile tests into profile driven feedback generated binaries

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01118931A (ja) * 1987-11-02 1989-05-11 Hitachi Ltd プログラム変換方式
JPH02176938A (ja) * 1988-12-28 1990-07-10 Hitachi Ltd 機械語命令最適化方式
JPH0683632A (ja) * 1992-09-01 1994-03-25 Hitachi Ltd 整定数乗算最適化方法
JPH06274350A (ja) * 1993-03-19 1994-09-30 Fujitsu Ltd コンパイラ装置
JP2001142718A (ja) * 1999-11-18 2001-05-25 Fujitsu Ltd プログラム実行装置
JP2003131889A (ja) * 2001-10-25 2003-05-09 Hitachi Ltd オブジェクトプログラム生成方法
JP2004005650A (ja) * 2002-05-30 2004-01-08 Hewlett-Packard Development Co Lp 実行中のコンピュータプログラムの性能を向上させる方法
JP2004062324A (ja) * 2002-07-25 2004-02-26 Nec Corp 最適化コンパイル装置、プログラム最適化方法、プログラム、及び記憶媒体

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6922829B2 (en) * 1999-10-12 2005-07-26 Texas Instruments Incorporated Method of generating profile-optimized code
US7000227B1 (en) * 2000-09-29 2006-02-14 Intel Corporation Iterative optimizing compiler
US7603664B2 (en) * 2002-10-22 2009-10-13 Sun Microsystems, Inc. System and method for marking software code
US6964042B2 (en) * 2002-12-17 2005-11-08 Bea Systems, Inc. System and method for iterative code optimization using adaptive size metrics
US20060236310A1 (en) * 2005-04-19 2006-10-19 Domeika Max J Methods and apparatus to iteratively compile software to meet user-defined criteria
US20080250399A1 (en) * 2005-12-30 2008-10-09 Bo Huang Evaluation and Selection of Programming Code

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01118931A (ja) * 1987-11-02 1989-05-11 Hitachi Ltd プログラム変換方式
JPH02176938A (ja) * 1988-12-28 1990-07-10 Hitachi Ltd 機械語命令最適化方式
JPH0683632A (ja) * 1992-09-01 1994-03-25 Hitachi Ltd 整定数乗算最適化方法
JPH06274350A (ja) * 1993-03-19 1994-09-30 Fujitsu Ltd コンパイラ装置
JP2001142718A (ja) * 1999-11-18 2001-05-25 Fujitsu Ltd プログラム実行装置
JP2003131889A (ja) * 2001-10-25 2003-05-09 Hitachi Ltd オブジェクトプログラム生成方法
JP2004005650A (ja) * 2002-05-30 2004-01-08 Hewlett-Packard Development Co Lp 実行中のコンピュータプログラムの性能を向上させる方法
JP2004062324A (ja) * 2002-07-25 2004-02-26 Nec Corp 最適化コンパイル装置、プログラム最適化方法、プログラム、及び記憶媒体

Also Published As

Publication number Publication date
US20070204260A1 (en) 2007-08-30

Similar Documents

Publication Publication Date Title
US9645803B2 (en) Methods and systems for forming an adjusted perform range
US10860300B2 (en) Direct function call substitution using preprocessor
Almási et al. Majic: Compiling matlab for speed and responsiveness
US6973644B2 (en) Program interpreter
US9081586B2 (en) Systems and methods for customizing optimization/transformation/ processing strategies
US20070234276A1 (en) Method, system, and program of a compiler to parallelize source code
JPH05257709A (ja) 並列化判別方法およびそれを用いた並列化支援方法
JP2004062858A (ja) データ処理装置内のアプリケーション・コードのコンパイル
JP2011530768A (ja) ソフトウェア・アプリケーションの性能向上
EP3244306B1 (en) A computer-implemented method for allowing modification of a region of original code
JPH1097430A (ja) 最適化のためにアセンブリコードルーチンをソースコードルーチンに挿入する方法およびそのシステム
KR20010086159A (ko) 자바 프로그램들 및 이를 위한 소프트웨어 프러덕트의플랫폼 특정 효율 강화를 위한 방법
US6301652B1 (en) Instruction cache alignment mechanism for branch targets based on predicted execution frequencies
US8762974B1 (en) Context-sensitive compiler directives
JP2007226589A (ja) プログラム変換システム
US20060107258A1 (en) Program, program code optimization method, program code compile method, program code, and information processing system
JP2008276735A (ja) プログラムコード変換装置及びプログラムコード変換方法
Cho et al. Development of a Prototyping Tool for New Memory Subsystem
US20170206068A1 (en) Program optimization based on directives for intermediate code
US10761820B2 (en) Assisting parallelization of a computer program
Adamski et al. Polyhedral source-to-source compiler
Osmialowski How the Flang frontend works: Introduction to the interior of the open-source fortran frontend for LLVM
JP2007233805A (ja) プログラム変換システム
Tian String Concatenation Optimization on Java Bytecode.
JP3551352B2 (ja) ループ分割方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080729

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20081210

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090420

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110510

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110920