情報科学演習III小林研究室課題5

静的プログラム解析を用いたコンパイラの最適化

この課題では、
  1. 既存のコンパイラの遅くなっている原因を考えて、
  2. それを取り除く解析方法を考える
  3. 解析・最適化の実装
  4. 性能評価の実験
を体験してもらいます。

既存のコンパイラって?

3年の演習でコンパイラ担当だった人は愛着のある?自作のコンパイラを速くしても構いませんし、その他のコンパイラを改造しても構いません。ただ、あまりに巨大な言語のコンパイラだと一ヶ月では、とても終わらないので、Scheme (のサブセット)くらいが適当だと思います。
 

解析方法を考える

何を速くしたいかにもよるわけですが、うまいのが思い付かない人には、すでに提案されている解析手法の論文を読んでもらって、それを実装してもらうのでもいいでしょう。

最適化の例を挙げると、

などが考えられます。関数型言語の手続き間解析には、control flow analysis, set-based analysis などが提案されています。
 

参考文献

  1. C. Flanagan, M. Felleisen. Set-based analysis for full scheme and its use in soft-typing. Technical Report, Rice University, 1993.
  2. S. Jagannathan, A. Wright. Effective flow analysis for avoiding run-time checks. In SAS'95, Springer LNCS983.


課題一覧へ
igarashi@is.s.u-tokyo.ac.jp