Perlの最適化器

perlgutsperlhackによれば,Perlの最適化は3段階あるらしい。

  • check routines
  • context propagation
  • peephole optimization

今までやってきたPL_checkによるカスタマイズはこのcheck routinesフェイズのことだったようだ。
check routinesはOPコードの生成時に行われるので,PL_checkのコールバックから利用できる情報が必ずしも十分でない。しかし,peephole optimizerはある程度まとまった構文木に対して呼び出されるので,そこで利用できる情報は多い。そして,このpeephole optimizerはPL_peeppを書き換えることでカスタマイズできる。しかもこれらの操作はコンパイル時に行われるため,実行速度への影響はまったくないのでやりたい放題である。すばらしい。
なお,peephole optimizerへのPerlインターフェイスを実装したのが,CPANoptimizerらしい。たぶん。