実行時コード最適化の自動化
スポンサーリンク
概要
- 論文の詳細を見る
実行時のコンテキストについてプログラムを特化することによって、プログラムの性能を飛躍的に向上できる場合がある。実行時に値が決定される定数や、実行中の限られた間だけ有効な値を用いたプログラムでは、それらに依存した計算や制御構造を除去することができる。近年では、部分評価 (partial evaluation) の技法を利用するなどしてプログラムを自動的に特化し、実行時コード生成 (run-time code generation) の技法を使い、そのようなコードを生成することによって実行効率を改善する処理系が提案されている。これらの処理系では、コードを特化するための解析の多くを静的に行うことによって、実行時のコストを小さくしているが、コード生成のコストは実行時間に比べて小さくないので、全体として性能を向上するためには生成したコードが繰り返し実行されなくてはならない。したがって、ある実行時コード生成が性能を改善できるかどうかを判定するためには、プログラムの特化による実行時間の短縮と、そのプログラムが使用される回数が分からなくてはならない。実行時間の短縮は、速度向上解析 (speed up analysis) によって得ることができる。しかし、プログラム中のある部分が実行される回数を解析することは、一般的には不可能である。そのために、プログラマが特化すべき部分を指定しなくてはならなかったリ、コード生成のコストが償却できないようなコード生成をしてしまい、全体としての性能が低下してしてしまったりする。本研究では、インクリメンタルに実行時コード生成を行なうことによって、複雑な解析を必要としないで、従来よりも安全に実行時コード最適化の方法を提案する。はじめにコストの小さい方法を用いて実行時間の短縮をし、さらに何回も実行された場合には、実行時コード生成を用いて、高度に最適化されたコードを生成する。はじめの最適化によって得られる実行時間の短縮を利用してコード生成をするために、従来よりも全体として効率が低下する場合を少なくすることができる。
- 一般社団法人情報処理学会の論文
- 1997-03-12
著者
関連論文
- LZH法における並列データ圧縮技法
- Rubyによる複数資源要約システムの実現
- Rubyによる複数資源要約システムの実現
- モバイルエージエントのためのデータフロー解析とその応用
- 疎な要求駆動型データフロー解析
- 別名情報に基づくレジスタ促進
- May別名除去
- 別名情報による段階的詳細化に基づいた等価式発見
- 依存グラフを用いたコード移動妨害領域の効果的な除去法
- 拡張値グラフを用いた部分無効コード除去法