JPH04330527A - プログラムの最適化方法及びコンパイラ・システム - Google Patents

プログラムの最適化方法及びコンパイラ・システム

Info

Publication number
JPH04330527A
JPH04330527A JP3040548A JP4054891A JPH04330527A JP H04330527 A JPH04330527 A JP H04330527A JP 3040548 A JP3040548 A JP 3040548A JP 4054891 A JP4054891 A JP 4054891A JP H04330527 A JPH04330527 A JP H04330527A
Authority
JP
Japan
Prior art keywords
cost
branch
multiway
program
selecting
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
Application number
JP3040548A
Other languages
English (en)
Other versions
JP2500079B2 (ja
Inventor
Steven M Hoxey
スチーブン・マレー・ホクシー
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH04330527A publication Critical patent/JPH04330527A/ja
Application granted granted Critical
Publication of JP2500079B2 publication Critical patent/JP2500079B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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

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

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンパイラの最適化に関
する。詳細にいえば、マルチウェイ分岐に対して考えら
れる各解法のコストを示す関数を使用し、マルチウェイ
分岐の実行前に各方法の相対的なコストを比較し、もっ
ともコストの低い方法を実行のために選択して、マルチ
ウェイ分岐の実行パフォーマンスを改善することに関す
る。
【0002】
【従来の技術】もっとも高水準の言語は、通常マルチウ
ェイ分岐とみなされる言語構造を含んでおり、この構造
内で実行時変数が、定数のセットの各メンバーと比較さ
れ、比較の結果に基づいてステートメントの選択が行わ
れる。このような構造は、ケース・ステートメントまた
はスイッチ・ステートメントと呼ばれることもある。 「ケース・セレクタ」と呼ばれることもある実行時変数
は式であって、「ケース(case)項」と呼ばれるこ
ともある指定された定数のセットに対してテストされる
。当分野で周知のように、マルチウェイ分岐は各種の選
択方法を利用して、レンジ・テスト、ジャンプ・テーブ
ル、比較分岐シーケンス、アドレス変換及び算術級数を
含む、必要な論理を遂行する。実行時に最善のパフォー
マンスをもたらす方法は、コンパイルされたプログラム
が実行される機械の基礎となるアーキテクチャによって
、また選択セット、すなわち実行時変数の比較対象であ
る定数のセットの値によって大幅に変化する。
【0003】最良の実行コードを作成する問題を解決す
るための周知の試みは一般に、プログラムがコンパイル
される対象の特定の機械、すなわち目的機械のアーキテ
クチャに関連している。このことは解法に、またヒュー
リスティック情報に、この機械に最適なコード形式に関
する想定を含めることによって行われる。たとえば、マ
ルチウェイ分岐が高水準言語の一般的に使用される構造
であるから、ある種の複雑命令セット・コンピュータ(
CICS)システムの設計者は命令をこのようなコンピ
ュータに組み込んで、比較的低いコストでテーブル索引
付き分岐をもたらしている。このようなアーキテクチャ
に対するマルチウェイ分岐の実現者はしばしば、自分た
ちの解法を調整し、パフォーマンスが最良ではないコー
ドの何らかの収集に対してさえも、この命令を常に利用
するようにしている。周知の従来の方法は、1種類の機
械にだけ最適であり、かつ実行時変数と比較される選択
セットの1組の条件において最適なコードを作成する。
【0004】R・バーンスタイン(Bernstein
)「ケース・ステートメントに対する良好なコードの作
成(Producing  Good  Code  
for  the  Case  Statement
)」、IBM  RESEARCH  REPORT 
 10525(#45755)1983/12/06は
利用可能なテストがジャンプ・テーブル、レンジ・テス
ト、2進探索及び線形探索を含んでいる場合に、ケース
・ステートメントのどのテストが適切かを判定する際に
使用する若干の考慮事項を説明し、「セット」と呼ばれ
ることのある単一のクラスタとしてのケース項のすべて
から始め、各々がジャンプ・テーブル解に対する最低ケ
ース密度に合致するまで、小さなクラスタに分割してい
く選択方法を開示している。この場合、数種類のテスト
が、常にジャンプ・テーブルから始まる所定の順序で行
われる。
【0005】エイホ、セチ及びウルマン(Aho,Se
thi,and  Ullman)「コンパイラ:原理
、手法及びツール(COMPILER:PRINCIP
LES,TECHNIQUES  AND  TOOL
S)」Addison−Wesley(1988年)の
第10章では、最適化方法がごく一般的に検討されてい
る。他の関連する従来技術の参照文献としては、「Pa
scalにおける2状態ケース・ステートメントの最適
化(Opimizing  Two−state  C
ase  Statement  in  Pasca
l)」、SOFTWARE−PRACTICE  AN
D  EXPERIENCE、12:6(1982年)
、571−581、ならびにJ・ヘネシィ(Henne
ssey)及びN・メンデルソーン(Mendelso
hn)、「Pascalケース・ステートメントのコン
パイル(Compilation  of  the 
 Pascal  Case  Statement)
」、SOFTWARE−PRACTICE  AND 
 EXPERIENCE、12:9(1982年)、8
79−882がある。
【0006】
【発明が解決しようとする課題】これらの試みにもかか
わらず、実行を最低限としてケース・ステートメントを
評価するための、コンパイル時に遭遇すると思われるケ
ースの全数及び密度を処理するだけではなく、移植性も
よい、すなわち異なるアーキテクチャを有する目的機械
で使用できる最適化方法が依然として必要である。
【0007】
【課題を解決するための手段】マルチウェイ分岐ステー
トメントの処理が実行時変数の規定の値にしたがって、
取ることのできると考えられる分岐を予め定義し、所定
のコスト決定方法にしたがって方法の各々のコストを決
定し、コストのもっとも低い方法を選択して実行するこ
とによって容易となることが判明した。
【0008】したがって、本発明は下記のステップから
なるコンピュータにおいてコンパイルされるプログラム
を最適化する方法を提供する。
【0009】(a)マルチウェイ分岐ステートメントを
選択し、(b)複数の命令シーケンスの各々の相対実行
コストを決定して、前記マルチウェイ分岐ステートメン
トを実施し、(c)前記の複数の命令シーケンスから、
コストのもっとも低い命令シーケンスを選択し、(d)
前記の最低コストの命令シーケンスを実施する。本発明
はさらに、下記のステップからなるコンピュータにおい
てコンパイルされるプログラムを最適化する方法を提供
する。
【0010】(a)マルチウェイ分岐ステートメントを
選択し、(b)テストを実行する各方法がジャンプ・テ
ーブル、レンジ・テスト、比較分岐、算術級数、及びア
ドレス変換からなる場合に、該各方法の相対コストを決
定して、前記プログラムがどの分岐を取り入れるかを選
択し、(c)必要なコストがもっとも低い方法を選択し
、(d)選択した方法に対応する命令シーケンスを実施
する。本発明はさらに、下記のものからなるコンピュー
タにおいて実行されるプログラムを最適化する改善され
たコンパイラを提供する。
【0011】(a)マルチウェイ分岐を選択する手段と
、(b)テストを実行する各方法がジャンプ・テーブル
、レンジ・テスト、比較分岐、算術級数、及びアドレス
変換からなる場合に、該各方法の相対コストを決定して
、前記プログラムがどの分岐を取り入れるかを決定する
手段と、(c)コストのもっとも低い方法を選択する手
段と、(d)選択した方法に対応する命令シーケンスを
実施する手段。
【0012】本発明の方法及びコンパイラはコードのコ
ンパイル中に、テスト変数の取り得る値をセット要素と
して処理し、テスト・ポイントをくみあわせるセットを
識別することによって、ケース・ステートメントを処理
するが、レンジ・セットは組み合わされたポイントによ
って定義された範囲内の取りうるすべてのポイントを含
んでおり、デンス・セットは特に目的機械に依存する、
少なくともプログラマが選択可能なある値である有効な
値の一部を含んでおり、ユニーク・セットは各々がレン
ジ・セットまたはデンス・セットに組み合わされていな
いポイントを1つだけ含んでおり、バウンド・セットは
他のすべてのセットが選択された後で残ったポイントを
含んでいる。
【0013】特定の目的機械、つまりヒューリスティッ
ク情報に対してこの問題を解決するための他の手法が試
みられ、どのようなタイプのコードが最適なのかに関す
る基礎となる想定が解決手順の一部となる。本発明は複
数のアーキテクチャを同時に対象とし、機械Aには適し
ているが、機械Bには適していない想定を除去する必要
があった。
【0014】インターバル・クラスタ化に対する「グリ
ーディ手法」に関するR・バーンスタインの検討は、バ
ーンスタインの最初のセットが選択値のすべてを含んで
いることを示唆している。各分割後、サブインターバル
間の新しいギャップが計算され、その最大値が次の分割
の位置となる。詳細には述べないが、基礎となる想定は
、ジャンプ・テーブル法が求める最良な方法であるとい
うものである。本発明は反対の手法、すなわち大きなイ
ンターバルを分割するのではなく、小さなインターバル
を組み合わせるという手法を取る。これはデータを区分
するのに必要な計算量の低減、ならびに特定の目的アー
キテクチャに対して最適な方法を選択する能力をもたら
すはずである。
【0015】
【実施例】本発明はマルチウェイ分岐ステートメントを
評価する際にかかるクロック・サイクルの数を減らすこ
とによって、目的機械でのコンパイルされたプログラム
の実行コストを下げることを目的としている。クロック
・サイクルとは特定の操作または機能を行うのに、中央
演算処理装置にかかる時間について、しばしば使用され
る測定値である。本発明の方法には、このような評価に
利用されるメモリの量を少なくするという、一般的な効
果もある。関連したコンパイラが使用される任意の型式
の目的機械アーキテクチャに適用されるように設計され
ている。以下で説明するように、本発明の最適化方法が
一般に、中間コード・レベルで適用されるので、各種の
目的コンピュータ・アーキテクチャに容易に適合させる
ことができるが、これは部分的には、「バック・エンド
」が最適化された中間コードを、目的コンピュータで実
際に実行される機械コードに変換するからである。最適
化の原理はコンパイラ作成の分野で周知のものであるか
ら、本命最初で詳細に説明する必要はない。
【0016】追随する適切な分岐の選択に関連するコス
トは、コンパイルに関連するコストと、目的機械でコン
パイルされたプログラムを実行するコスト、すなわち実
行コストの両方を含んでいる。一般に、コンパイラが各
プログラムで1回だけ実行され、これを実行可能な形態
にするものであるから、コンパイルに関連するコストは
実行コストに比較して小さく、コンパイラはコンパイラ
のサイズ及びコンパイル時間を若干犠牲にしても、コン
パイルされたプログラムの実行を最適化するため、ます
ます複雑なものとなってきている。
【0017】マルチウェイ分岐ステートメントはほとん
どの典型的なソース・プログラムのコードのどこかに置
かれる。このようなステートメントの各々は、本明細書
で説明する最小コスト法の候補となる。追随するのに適
切な分岐は、プログラムのソース・テキストに含まれる
パラメータを含む多くの要因、ならびにプログラムに関
連してどのデータがシステムに入力されたかに応じて、
プログラムによって選択される。上述のように、マルチ
ウェイ分岐ステートメントの変数をテストして、正しい
分岐を選択することのできる方法はいくつかある。これ
らの方法はジャンプ・テーブルの生成、レンジ・テスト
の実行、線形探索及び2進探索を含む比較分岐シーケン
ス、アドレス変換、ならびに演算級数の認識を含んでい
る。これらの方法のすべてが必ずしも各コンピュータ・
アーキテクチャで使用されるものではなく、これらが実
現される方法はアーキテクチャごとに異なっている。こ
れらの方法の各々には、特に分岐を評価する際の特定の
実行時変数におけるデータの値、分岐を選択して、制御
を移すことのできる選択肢の数、目的機械によって左右
されるコストがかかる。異なるタイプの操作には、それ
ぞれに異なる相対的なコストがかかり、どのような命令
が機械のアーキテクチャで利用できるか、また各命令が
どのように作動するかによって左右される。これらは特
定の機械のプログラミングの分野の技術者にとって周知
のものである。
【0018】所与の分岐を評価するためのコスト・パラ
メータはコスト決定ヒューリスティックに挿入でき、こ
れはコンパイラが評価の実行コストを評価できるように
する。
【0019】商業的に実施するために構成された本発明
の好ましい実施例において、ケース選択方法の選択肢は
レンジ分析、ジャンプ・テーブル生成、ならびに2つの
形式の比較分岐シーケンス、すなわち線形探索及び2進
探索に限定される。これらはマルチウェイ分岐の評価時
にもっとも一般的に使用される選択方法である。実施例
に使用される特定のコンピュータ・システムにアドレス
変換のための命令がないので、これをケース選択方法と
して組み込む必要はない。
【0020】好ましい実施例の以下の説明において、便
宜上及び明確化のために、「クラスタ」と呼ばれること
のある各種のセットに与えられる名前は一般に、それぞ
れのセットのメンバーに使用される選択方法を反映する
ように選ばれたものである。
【0021】RANGEは目的ロケーションが同じステ
ートメントである順次値のセットである。C関数isd
igit(c)の好ましい実施形態の例を以下に示す。
【0022】   Cを使用した場合               
 PASCALを使用した場合  switch(c)
{            CASE  c  OF 
     case  ’0’:          
  ’0’..’9’    :  x:=1;   
   case  ’1’:            
OTHERWISE  :  x:=0;      
case  ’2’:            END
      case  ’3’:       case  ’4’:       case  ’5’:       case  ’6’:       case  ’7’:       case  ’8’:       case  ’9’:  return(
1);      }   return(0):
【0023】RANGEセットを処理するのための当分
野で周知の方法は、4命令シーケンスを使用して単純な
レンジ・テストを行うことである。
【0024】1.実行時変数をレンジの高域と比較する
【0025】2.変数がこれよりも大きければ、分岐す
る。
【0026】3.実行時変数を低域と比較する。
【0027】4.実行時変数がこれ以下でなければ、目
的ロケーションへ分岐する。
【0028】無記号ないし「論理」比較を可能とする、
機械アーキテクチャに対する同等な短いシーケンスは次
のとおりである。
【0029】1.レンジの低域を実行時変数から引く。
【0030】2.結果を高域と低域の間の差と論理比較
する。
【0031】3.論理的にこれよりも大きくなければ、
目的ロケーションへ分岐する。
【0032】DENSEは必ずしも順次となっておらず
、目的ロケーションが異なっており、「ケース密度」と
呼ばれることのある、セット内の最大値と最小値の間の
差によって割った判明な値の数であるセット密度がコス
ト決定ヒューリスティックに与えられた限度内にある値
のセットである。この限度はプログラマが与えることも
、あるいはもっとも頻繁に遭遇する状況をカバーするた
めに予め選択することもできるものである。たとえば、
10から49までの範囲の整数のセットから、このセッ
トから奇数の整数を利用可能な値として選択するデンス
・セットが予測される場合、このセットのデンス・セッ
トは0.5となる。2つの言語の各々に対してデンス・
セットを使用した例を、以下に示す。
【0033】 Cを使用した場合                 
              PASCALを使用した
場合 switch(c){               
              CASE  c  OF
case  ’A’  :  x=0;  break
;       ’A’  :  x:=0;case
  ’B’  :  x=1:  break;   
    ’B’  :  x:=1;case  ’D
’  :  x=2;  break;       
’D’  :  x:=2;}           
                         
             END
【0034】DEN
SEセットを処理する周知の方法は、もちろんほとんど
の非最適化コンパイラ実施形態がマルチウェイ分岐を処
理する方法、すなわち索引付きロード命令を解して参照
されるジャンプ・テーブルを生成し、ロードされたアド
レスへ分岐する方法である。このシーケンスの前には通
常、上述のような3つまたは4つの命令レンジ・テスト
・シーケンスが置かれ、アドレス指定例外に対する保護
を行っている。したがって、シーケンス全体は次のよう
になる。
【0035】1.失敗したコードをレンジ・テストし、
【0036】2.テーブルからアドレスをロードし、

0037】3.ロードされたアドレスへ分岐する。
【0038】BOUNDは他の2つのクラスの一方にク
ラスタされないすべての他の選択値の和集合を含んでい
るセットである。BOUNDセットは各対が比較及び同
等時に分岐を含んでいる命令セットのシーケンスである
【0039】UNIQUEはメンバーが1つだけのセッ
トである。選択値の母集団の各メンバーはまずこの態様
で表されてから、区分が行われる。
【0040】クラスタ化の方法は分類された順序でセッ
トを調べ、各セットをもっとも近い隣接セットと和集合
を取ることを試みる。結果として生じるセットに個々の
実施形態のコストの合計よりも、費用効果の高い実施形
態があるとコスト決定ヒューリスティックが決定した場
合に、和集合が取られる。この手法を使用した場合、U
NIQUEセットを1回だけ調べて、DENSEまたは
RANGEセットを形成するだけでよく、これらのセッ
トはすべてのUNIQUEセットが調べられるまで成長
を続ける。DENSEセットまたはRANGEセットに
クラスタされないすべてのUNIQUEセットの和集合
は、BOUNDセットになる。これで区分ステップは完
了する。
【0041】区分が行われると、選択コードを各セット
内のデータに対して生成できるようになる。次いで、各
セット順次調べて、そのメンバーに対して適切な選択論
理を生成する。現行の生成論理は最初の母集団からの各
値が、実行時に発生する同等な確率を有しており、した
がって線形的にテストを生成すると想定している。しか
しながら、充分な数のセットがあるか、あるいはBOU
NDセットに充分な数のメンバーがある場合、各セット
は実行時に横切る2進木のノードとして配置される。線
形探索論理から2進探索論理への切換えの決定は、この
場合も、2進探索法が木の各ノードにおいて付加的な比
較分岐を必要とすることに注目して、コスト決定ヒュー
リスティックによって決定される。
【0042】どの値がもっとも発生しやすいかに関する
確率情報を提供する付加的な機能によって、この時点で
ハフマン探索を使用することを考慮することができる。 ハフマン探索の方法は、当分野の技術者にとって周知で
ある。
【0043】各種の方法に対するコード・パターンの検
討によって、機械固有なコスト決定ヒューリスティック
が下記の命令コストから開発されることが明らかになっ
た。
【0044】1.比較(適宜、記号なしと記号付きの両
方)
【0045】2.条件付き分岐
【0046】3.レジスタから定数を引く
【0047】
4.メモリからレジスタへロードする
【0048】5.
レジスタ内のアドレスに分岐する
【0049】6.ロー
ドし、アドレスへ分岐する(アーキテクチャの中には、
ジャンプ・テーブル・アクセス方式が組み込まれている
ものもある)
【0050】7.メモリ・コストを使用して、サイクル
時間に無関係に変動する命令長を反映することができる
。スペースを最適化する場合、ジャンプ・テーブルを使
用することによって、クラスタ化をもたらす付加的なオ
ーバーヘッドをこうむることがある。
【0051】8.密度限度はジャンプ・テーブルの作成
時に認めることのできる、維持するためのメモリ・コス
トとは無関係な部分的に未使用なメモリ・オーバーヘッ
ドを反映する。
【0052】下記の例は本発明の方法を実施することに
よって、典型的な縮小命令セット・コンピュータ(RI
SC)システムで得られる実行速度の改善を示している
【0053】
【0054】このコードの断片に対する直接的な手法は
、比較分岐命令のシーケンスを生成することである。 この場合、各々が特定の「case  n  :」クロ
ーズを表す9つの比較命令と9つの分岐命令がある。た
とえば、IBM  RT  PCシステムにおいては、
各命令を実行するのに1サイクルかかり、選択を行うコ
ストは18サイクル程度である。しかしながら、このコ
ードがレンジ・テストとして実施された場合には、これ
に必要なのは4サイクルだけとなろう。このことはこの
特定なコンピュータ・システムにおいて、18サイクル
の内14サイクル、すなわち78%が節約されることを
表す。
【0055】時間の節約は当分野の技術者に容易に理解
されるように、各種の処理装置、ならびにケース・ステ
ートメントのサイズ及び密度によって異なっているが、
平均して、処理時間の大幅な削減がデータ処理分野で一
般的に使用されるすべてのタイプの処理装置で実現でき
るものである。
【0056】
【発明の効果】本発明はマルチウェイ分岐に可能な各解
法のコストを示す関数を使用し、マルチウェイ分岐を実
行する前に、各方法の相対コストを比較し、かつもっと
もコストの低い方法を実行のために選択することによっ
て、マルチウェイ分岐の実行パフォーマンスを改善する
ものである。

Claims (9)

    【特許請求の範囲】 コンパイラの最適化方法
  1. 【請求項1】(a)マルチウェイ分岐ステートメントを
    選択し、(b)複数の命令シーケンスの各々の相対実行
    コストを決定して、前記マルチウェイ分岐ステートメン
    トを実施し、(c)前記の複数の命令シーケンスから、
    コストのもっとも低い命令シーケンスを選択し、(d)
    前記の最低コストの命令シーケンスを実施するステップ
    を有する、コンピュータでコンパイルされるプログラム
    を最適化する方法。
  2. 【請求項2】前記の複数の命令シーケンスがレンジ・テ
    スト、ジャンプ・テーブル、比較分岐、算術級数、及び
    アドレス変換からなる、請求項1記載の方法。
  3. 【請求項3】(a)マルチウェイ分岐ステートメントを
    選択し、(b)テストを実行する各方法がジャンプ・テ
    ーブル、レンジ・テスト、比較分岐、算術級数、及びア
    ドレス変換からなる場合に、該各方法の相対コストを決
    定して、前記プログラムがどの分岐を取り入れるかを選
    択し、(c)必要なコストがもっとも低い方法を選択し
    、(d)選択した方法に対応する命令シーケンスを実施
    するステップからなる、コンピュータでコンパイルされ
    るプログラムを最適化する方法。
  4. 【請求項4】前記コストが前記プログラムを実行するの
    に必要な機械時間のコストを含んでいる、請求項1また
    は請求項3記載の方法。
  5. 【請求項5】コンパイルされる前記プログラムのソース
    ・テキストによって決定されるパラメータにしたがって
    、複数の選択値を設定することをさらに含んでいる、請
    求項1記載の方法。
  6. 【請求項6】コストの前記の決定が値をコスト決定ヒュ
    ーリスティックに挿入することによって行われる方法で
    あって、さらに前記コンピュータのアーキテクチャにし
    たがって、前記値を前記コスト決定ヒューリスティック
    に設定することを含んでいる、請求項1記載の方法。
  7. 【請求項7】さらに、コスト決定ヒューリスティックを
    確立し、該コスト決定ヒューリスティックが前記最低価
    格の命令シーケンスを選択するセットに前記定数をクラ
    スタ化するステップからなる、請求項1または3のいず
    れか記載の方法。
  8. 【請求項8】(a)マルチウェイ分岐を選択する手段と
    、(b)テストを実行する各方法がジャンプ・テーブル
    、レンジ・テスト、比較分岐、算術級数、及びアドレス
    変換からなる場合に、該各方法の相対コストを決定して
    、前記プログラムがどの分岐を取り入れるかを決定する
    手段と、(c)コストのもっとも低い方法を選択する手
    段と、(d)選択した方法に対応する命令シーケンスを
    実施する手段とからなる、コンピュータによって実行さ
    れるプログラムを最適化する改良されたコンパイラ・シ
    ステム。
  9. 【請求項9】前記コストが前記プログラムを実行するの
    に必要な機械時間のコストを含んでいる、請求項8記載
    の改良されたコンパイラ・システム。
JP3040548A 1990-02-14 1991-02-13 プログラムの最適化方法及びコンパイラ・システム Expired - Lifetime JP2500079B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CA2010068 1990-02-14
CA002010068A CA2010068C (en) 1990-02-14 1990-02-14 Partitioning case statements for optimal execution performance

Publications (2)

Publication Number Publication Date
JPH04330527A true JPH04330527A (ja) 1992-11-18
JP2500079B2 JP2500079B2 (ja) 1996-05-29

Family

ID=4144298

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3040548A Expired - Lifetime JP2500079B2 (ja) 1990-02-14 1991-02-13 プログラムの最適化方法及びコンパイラ・システム

Country Status (5)

Country Link
US (1) US5339420A (ja)
EP (1) EP0442624A3 (ja)
JP (1) JP2500079B2 (ja)
BR (1) BR9100573A (ja)
CA (1) CA2010068C (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014132668A1 (ja) * 2013-03-01 2014-09-04 株式会社 東芝 多分岐判断構文の最適化処理装置
JP2017033342A (ja) * 2015-08-03 2017-02-09 富士通株式会社 コンパイル装置、コンパイル方法およびコンパイルプログラム

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5452457A (en) * 1993-01-29 1995-09-19 International Business Machines Corporation Program construct and methods/systems for optimizing assembled code for execution
JPH06314203A (ja) * 1993-04-28 1994-11-08 Fujitsu Ltd コンパイラの最適化方法および装置
CA2190487A1 (en) * 1994-05-16 1995-11-23 Daniel Kenneth Freeman Instruction creation device
US5787285A (en) * 1995-08-15 1998-07-28 International Business Machines Corporation Apparatus and method for optimizing applications for multiple operational environments or modes
US5835774A (en) * 1996-04-30 1998-11-10 Hewlett-Packard Company Efficient 32-bit based case table support for 64-bit architectures
US5778233A (en) * 1996-10-11 1998-07-07 International Business Machines Corporation Method and apparatus for enabling global compiler optimizations in the presence of exception handlers within a computer program
US6412105B1 (en) 1997-12-31 2002-06-25 Elbrus International Limited Computer method and apparatus for compilation of multi-way decisions
US6145120A (en) * 1998-03-24 2000-11-07 Lockheed Martin Corporation Declaration programming language extension for procedural programming languages
US20040210886A1 (en) * 2003-04-15 2004-10-21 Sverre Jarp Optimized switch statement code employing predicates
US7496905B2 (en) * 2003-07-18 2009-02-24 Bea Systems, Inc. System and method for generating state machines
US7451299B2 (en) * 2003-07-18 2008-11-11 Bea Systems, Inc. System and method for generating multi-way branches
KR100613287B1 (ko) * 2004-12-22 2006-08-21 동부일렉트로닉스 주식회사 수직 게이트를 갖는 반도체 소자 및 그 제조 방법
US7774764B2 (en) * 2005-12-21 2010-08-10 Intel Corporation Method and system for efficient range and stride checking
US8176479B2 (en) * 2006-07-21 2012-05-08 National Instruments Corporation Case structure replacement in a data flow diagram
US8813057B2 (en) * 2007-03-31 2014-08-19 Intel Corporation Branch pruning in architectures with speculation support
US8438003B2 (en) * 2007-04-12 2013-05-07 Cadence Design Systems, Inc. Methods for improved simulation of integrated circuit designs
US7685584B1 (en) * 2009-01-05 2010-03-23 International Business Machines Corporation Heuristic method for the analysis of switch tables in position-independent binary code
US8387003B2 (en) * 2009-10-27 2013-02-26 Oracle America, Inc. Pluperfect hashing
US8438536B2 (en) * 2009-10-28 2013-05-07 Oracle America, Inc. Encoding switch on ordered universes with binary decision diagrams
US10001978B2 (en) 2015-11-11 2018-06-19 Oracle International Corporation Type inference optimization
US10394812B2 (en) 2016-12-06 2019-08-27 International Business Machines Corporation Case statement optimization
US10795682B2 (en) * 2016-12-28 2020-10-06 Intel Corporation Generating vector based selection control statements

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH022425A (ja) * 1988-06-13 1990-01-08 Yaskawa Electric Mfg Co Ltd 多方向分岐演算の高速化方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5093916A (en) * 1988-05-20 1992-03-03 International Business Machines Corporation System for inserting constructs into compiled code, defining scoping of common blocks and dynamically binding common blocks to tasks

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH022425A (ja) * 1988-06-13 1990-01-08 Yaskawa Electric Mfg Co Ltd 多方向分岐演算の高速化方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014132668A1 (ja) * 2013-03-01 2014-09-04 株式会社 東芝 多分岐判断構文の最適化処理装置
JP2014194759A (ja) * 2013-03-01 2014-10-09 Toshiba Corp 多分岐判断構文の最適化処理装置
US9715374B2 (en) 2013-03-01 2017-07-25 Kabushiki Kaisha Toshiba Multi-branch determination syntax optimization apparatus
JP2017033342A (ja) * 2015-08-03 2017-02-09 富士通株式会社 コンパイル装置、コンパイル方法およびコンパイルプログラム

Also Published As

Publication number Publication date
US5339420A (en) 1994-08-16
BR9100573A (pt) 1991-10-29
EP0442624A3 (en) 1992-11-04
JP2500079B2 (ja) 1996-05-29
CA2010068A1 (en) 1991-08-14
CA2010068C (en) 1993-10-26
EP0442624A2 (en) 1991-08-21

Similar Documents

Publication Publication Date Title
JPH04330527A (ja) プログラムの最適化方法及びコンパイラ・システム
EP0373361B1 (en) Generating efficient code for a computer with dissimilar register spaces
EP0214751B1 (en) A method for vectorizing and compiling object code
US5966539A (en) Link time optimization with translation to intermediate program and following optimization techniques including program analysis code motion live variable set generation order analysis, dead code elimination and load invariant analysis
EP0428084B1 (en) Method and apparatus for compiling computer programs with interprocedural register allocation
EP0190622B1 (en) Method for optimizing operand access and processing in a computer system
US7725883B1 (en) Program interpreter
US5303357A (en) Loop optimization system
US4763255A (en) Method for generating short form instructions in an optimizing compiler
EP0467629B1 (en) A loop compiler method & apparatus for a data processing system
CA2010056C (en) Method for improving the efficiency of arithmetic code generation in an optimizing compiler using machine independent update instruction generation
US6345384B1 (en) Optimized program code generator, a method for compiling a source text and a computer-readable medium for a processor capable of operating with a plurality of instruction sets
US6523173B1 (en) Method and apparatus for allocating registers during code compilation using different spill strategies to evaluate spill cost
US5946491A (en) Register allocation method and apparatus for gernerating spill code as a function of register pressure compared to dual thresholds
US6425124B1 (en) Resource allocation device for reducing the size and run time of a machine language program
US6151704A (en) Method for optimizing a loop in a computer program by speculatively removing loads from within the loop
US4843545A (en) Compile method using copy propagation of a variable
US5555412A (en) Complier and method for alias checking in a complier
US6016398A (en) Method for using static single assignment to color out artificial register dependencies
US5999735A (en) Method for constructing a static single assignment language accommodating complex symbolic memory references
EP0180077B1 (en) A data processing machine for compiling computer programs
EP0252229B1 (en) Apl-to-fortran translator
Kroha Code generation for a RISC machine
JPH11161500A (ja) 実行時依存解析を行う目的プログラムの生成方法
Kalogeropulos Identifying the available parallelism using static analysis