今日,帰りの電車で思いついたんですが,言っておけばよかったー(誰に?) …ので,ここに書いておきます。
MT::Object に実際に問合せが発生する最小のテンプレートタグのレベルまで,事前に処理できるタグ,特に MTInclude などの処理を済ませておく。MTLoop などのタグもループを分解すると早くなるのかな?
MTInclude などで入れ子になっているテンプレートで,Include されるテンプレート毎に fork してやる。最近はサーバでもマルチコアプロセッサが当たり前なので,コア数まで fork すればプロセッサを有効活用できるんじゃないか? @see パイプライン処理
詳しくは勉強不足で知らないのですが。MTIf で分岐が行われる場合,真/偽の場合のそれぞれ結果を先に求めておく。これも fork で。もしくは条件は常に真である,として分岐先の結果を先に求めておく。@see 分岐予測
MT インスタンスを背負った Perl プロセスを fork したり,プロセス間通信のコストを考えると普通に逐次処理した方が早いかもしれませんが…